栗風(fēng)永 畢忠勤
(上海電力大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,上海 201306)
為應(yīng)對新型冠狀病毒肺炎疫情,教育部提出“停課不停教、停課不停學(xué)”指導(dǎo)意見[1],國內(nèi)各個高校紛紛開展在線教學(xué)。作為碩士研究生的主干專業(yè)基礎(chǔ)課程,算法設(shè)計與分析(以下簡稱“算法課程”)不僅承載著算法基礎(chǔ)理論和經(jīng)典算法設(shè)計的教學(xué)內(nèi)容,同時也是培養(yǎng)和提升研究生科研思維能力的平臺[2]。
通過對算法課程的學(xué)習(xí)與研究,學(xué)生應(yīng)具備以下兩方面能力:①掌握算法設(shè)計的主要思想,能夠?qū)λ惴ㄓ嬎銖?fù)雜性做出正確分析,同時結(jié)合經(jīng)典的算法分析案例,理解算法的理論體系,并能夠利用現(xiàn)代分析方法對算法進(jìn)行優(yōu)化。②培養(yǎng)學(xué)生提出問題、分析問題、解決問題的能力,并將其融入到后續(xù)的科研工作中。因此,算法課程不僅要培養(yǎng)學(xué)生利用基礎(chǔ)算法理論解決實際問題的能力,同時要教學(xué)過程中進(jìn)一步強(qiáng)化計算思維和創(chuàng)新意識,為后續(xù)科研工作奠定基礎(chǔ)。
作為計算機(jī)專業(yè)研究生的一門專業(yè)基礎(chǔ)課,算法課程在教學(xué)過程中需要注意以下幾個問題。首先,學(xué)生需要具備良好的數(shù)學(xué)和程序設(shè)計基礎(chǔ),比如需要先修離散數(shù)學(xué)、程序設(shè)計基礎(chǔ)、數(shù)據(jù)結(jié)構(gòu)等課程,但部分學(xué)生的先修課程基礎(chǔ)不同,因此一些內(nèi)容還需要在教學(xué)過程中進(jìn)行簡單介紹,如離散數(shù)學(xué)中的邏輯分析和數(shù)據(jù)結(jié)構(gòu)中的典型樹形結(jié)構(gòu)和鏈表等。其次,選修本門課程的研究生在本科階段并非全部來自計算機(jī)專業(yè),還包括其他如通信、自動化、數(shù)學(xué)等跨專業(yè)學(xué)生,如何組織教學(xué)內(nèi)容使學(xué)生的整體接受度達(dá)到最大,其難度顯而易見。最后,也是最重要的一點(diǎn),受當(dāng)前疫情影響,在線課程授課方式相比線下授課在師生互動方面有所減弱,而算法課程則需要學(xué)生結(jié)合典型算法的分析思想對部分算法實例進(jìn)行實時互動反饋,如何在線上充分調(diào)動學(xué)生的互動積極性,這也是當(dāng)前算法課程在線教學(xué)的一個難點(diǎn)。
在綜合分析了以上問題的基礎(chǔ)上,筆者重新梳理了算法設(shè)計與分析課程的內(nèi)容,并將其分為核心內(nèi)容和拓展內(nèi)容兩部分,以適應(yīng)不同基礎(chǔ)的學(xué)生。相對于本科教學(xué),研究生算法教學(xué)更側(cè)重于復(fù)雜性分析,以及針對復(fù)雜性的優(yōu)化過程[3],因此核心內(nèi)容主要涵蓋了經(jīng)典算法的設(shè)計思想和分析方法,如分治策略、動態(tài)規(guī)劃、貪心算法、回溯法、分支限界法以及隨機(jī)化算法等,這部分內(nèi)容要求所有學(xué)生能夠針對每一種典型算法描述出基本的設(shè)計思想,熟悉復(fù)雜度分析過程,寫出復(fù)雜度遞推方程,并進(jìn)行推導(dǎo)證明。拓展內(nèi)容則是在每一種經(jīng)典算法基礎(chǔ)上,針對不同算法案例進(jìn)行實例分析,并提出可能改進(jìn)的解決方案。由于每一種典型算法都包括了很多應(yīng)用實例,每一種實例有不同的理解難度,筆者根據(jù)難易程度將眾多應(yīng)用實例分成難、中、易三個等級,學(xué)生根據(jù)自己的基礎(chǔ)選擇不同案例進(jìn)行線下拓展學(xué)習(xí),進(jìn)一步完成相關(guān)的實驗任務(wù)。整體的教學(xué)內(nèi)容框架如圖1所示。
圖1 適應(yīng)在線教學(xué)的課程內(nèi)容梳理
受疫情影響,高校的大部分課程都采用在線教學(xué)形式。由于在線教學(xué)容易受到網(wǎng)絡(luò)環(huán)境的影響,在考慮在線授課特點(diǎn)的基礎(chǔ)上,結(jié)合算法課程的知識框架和教學(xué)內(nèi)容,課程采用屈婉玲等編著的《算法設(shè)計與分析》(第2版)作為主講教材[4]。該教材除了具備完備的課程教學(xué)體系外,在中國大學(xué)慕課(MOOC)平臺上也發(fā)布了較為完善的線上教學(xué)視頻供學(xué)生在線學(xué)習(xí)[5]。輔助教材采用王曉東編著的《計算機(jī)算法設(shè)計與分析》(第4版)[6],該教材也屬于國家精品課程教材。兩部教材都較為全面地涉及了經(jīng)典算法與對應(yīng)的實例分析,同時涵蓋了部分算法領(lǐng)域的熱點(diǎn)研究內(nèi)容,比較適合作為研究生課程的配套教材。
為了應(yīng)對在線教學(xué),算法設(shè)計與分析課程在疫情防控期間利用中國大學(xué)慕課(MOOC)平臺開展在線教學(xué)。中國大學(xué)慕課平臺提供三種課程授課方式:獨(dú)立SPOC(Small Private Online Course,小規(guī)模限制性在線課程)、異步SPOC、同步SPOC。結(jié)合線上教學(xué)的教材資料及精品課程開放情況,筆者采用異步SPOC模式實施在線教學(xué),它可以根據(jù)本校實際教學(xué)情況刪改原有內(nèi)容和新增補(bǔ)充內(nèi)容,教學(xué)過程中的作業(yè)批改答疑等由任課教師提供,可以很好地構(gòu)建師生的互動交流。同時,課程利用在線會議系統(tǒng)(如騰訊會議)組織算法課程的研討式教學(xué),開展實時在線研討。
作為一門計算機(jī)專業(yè)的研究生基礎(chǔ)課程,算法設(shè)計與分析更多承擔(dān)了培養(yǎng)學(xué)生計算思維能力的重任,同時還要讓學(xué)生在算法教學(xué)過程中提升分析問題的能力。計算思維能力體現(xiàn)在針對具體問題的描述、建模、求解的科學(xué)思維方式,而分析問題的能力則主要體現(xiàn)在對問題深入思考的靈敏嗅覺。筆者通過總結(jié)線下課程教學(xué)經(jīng)驗,將啟發(fā)式思維滲透到算法課堂教學(xué)中,在講解算法的設(shè)計思想和算法分析過程中,注重利用啟發(fā)式分析方法引導(dǎo)學(xué)生思考如何對模型進(jìn)一步優(yōu)化。針對一個具體問題,分析當(dāng)前解決方案,考慮其中存在的問題,進(jìn)一步思考如何解決該問題,最終找出應(yīng)對方法。如此反復(fù),直到學(xué)生掌握這種思考模式并能夠?qū)⑵涫炀殤?yīng)用到其他問題分析中。以算法課程中分治策略的整數(shù)乘法為例,啟發(fā)式的教學(xué)過程如表1所示。經(jīng)過反復(fù)的啟發(fā)式分析訓(xùn)練,學(xué)生的問題建模和分析能力得到較為明顯的提升,具備了針對問題進(jìn)一步優(yōu)化的靈敏嗅覺。
在教學(xué)過程中,筆者利用騰訊會議系統(tǒng)組織研討式教學(xué),進(jìn)一步加深學(xué)生對典型算法案例的理解并提升團(tuán)隊協(xié)作能力。研討內(nèi)容以經(jīng)典算法實例為主,通過實時在線講解和程序演示,讓學(xué)生就不同算法解決同一問題進(jìn)行分析對比。小組研討過程中注意區(qū)分不同程度的學(xué)生,根據(jù)學(xué)生的能力安排小組任務(wù)。以三人小組研討0-1背包問題為例,讓學(xué)生思考分別使用動態(tài)規(guī)劃和回溯法得到不同的解決方案,同時分析不同方案的異同點(diǎn)。研討過程中,學(xué)生A負(fù)責(zé)總體講解問題模型、算法設(shè)計、核心代碼以及復(fù)雜性分析。學(xué)生B負(fù)責(zé)算法的程序?qū)崿F(xiàn),并實際測試運(yùn)行時間。學(xué)生C則圍繞0-1背包問題檢索近年相關(guān)的科研論文,并就該主題做研究進(jìn)展綜述。研討式教學(xué)結(jié)構(gòu)如表2所示。騰訊會議系統(tǒng)可支持多人同時在線討論,相對于線下教學(xué)的小組研討,線上小組研討可以讓小組的每一位成員實時參與互動,激發(fā)學(xué)生創(chuàng)新能力的同時也培養(yǎng)了學(xué)生的團(tuán)隊協(xié)作能力。
表2 0-1背包問題的小組研討式在線教學(xué)案例
在拓展教學(xué)內(nèi)容的基礎(chǔ)上,圍繞每一個經(jīng)典算法布置多個不同的算法實例,并將其分為難、中、易三個等級,實驗教學(xué)要求學(xué)生根據(jù)自身能力自由選擇不同難度的算法實例編程實現(xiàn),并給出不同的參考和評價標(biāo)準(zhǔn)。實驗過程主要是線下完成,以學(xué)生為主,教師在線輔助指導(dǎo),并對程序設(shè)計過程中的問題做啟發(fā)性提示,根據(jù)不同層次的實驗內(nèi)容對學(xué)生進(jìn)行個性化培養(yǎng)。
綜合在線課程考核標(biāo)準(zhǔn),算法課程的理論考核占總成績的60%,研討式教學(xué)過程小組表現(xiàn)占20%,在線答疑和討論參與度占10%,實驗教學(xué)占10%。由于線上教學(xué)難以全面掌握所有學(xué)生的課堂參與度,在未來的教學(xué)環(huán)節(jié)中將調(diào)整課堂參與度的分?jǐn)?shù)占比,建立更加科學(xué)的考核體系。此外,小組研討過程中每一位成員都有自己的任務(wù),同時還需要相互配合完成小組的團(tuán)隊任務(wù),且可以隨時參與展示自己的想法和完成的內(nèi)容,整體上這一環(huán)節(jié)更能體現(xiàn)個人能力和團(tuán)隊協(xié)作能力,因此考核分值占比較大。
結(jié)合在線教學(xué)特點(diǎn),筆者對算法設(shè)計與分析課程教學(xué)模式進(jìn)行了創(chuàng)新設(shè)計。針對不同程度學(xué)生的特點(diǎn)重新梳理了課程的重點(diǎn)內(nèi)容和拓展內(nèi)容,并對具體的教學(xué)方式進(jìn)行設(shè)計,融入啟發(fā)式教學(xué)模式,逐步引導(dǎo)學(xué)生形成提出問題、分析問題、解決問題的思維方式。同時將研討式教學(xué)與線上教學(xué)有機(jī)融合,根據(jù)不同研究生的能力定制個性化教學(xué)任務(wù)目標(biāo),培養(yǎng)學(xué)生計算思維的同時,也顯著提升了學(xué)生自主分析和解決實際問題的能力。