王丹 付利華 杜金蓮
摘要:具有抽象度高、理論與實際結(jié)合緊密特點的算法設(shè)計與分析課程是計算機類專業(yè)的重要課程之一,如何提升教學(xué)效果是教學(xué)組織的一個重大挑戰(zhàn)。針對目前教學(xué)存在的問題,文章探討如何進(jìn)行教學(xué)內(nèi)容和教學(xué)方法的改革,提出“三化一體”的教改思路,并圍繞教學(xué)內(nèi)容的設(shè)計、教學(xué)方法的改進(jìn)、教學(xué)過程的組織等環(huán)節(jié)闡述具體的實施過程。
關(guān)鍵詞:算法分析與設(shè)計;教學(xué)方法;改革
1.教學(xué)現(xiàn)狀分析
經(jīng)典算法的基本思想、分析設(shè)計方法和實現(xiàn)技術(shù)是算法分析與設(shè)計課程的重點講授內(nèi)容,要求學(xué)生能夠進(jìn)行時間和空間復(fù)雜性分析。這些經(jīng)典算法包括:分治法、動態(tài)規(guī)劃、貪心法、分支限界法、回溯法等。由于算法是問題的程序化解決方案,所以研究算法需要經(jīng)過理解問題、確定問題的條件和應(yīng)用范圍、建立相應(yīng)的數(shù)學(xué)模型、開發(fā)相應(yīng)的求解算法、證明算法的正確性、分析算法的效率等步驟,最后采用合適的程序語言,編制相應(yīng)的軟件代碼。這一系列復(fù)雜的過程以及算法本身具有的高度抽象等特點,為教學(xué)帶來了一定的挑戰(zhàn)。在教學(xué)過程中我們發(fā)現(xiàn):師生課堂互動不足、學(xué)生的學(xué)習(xí)興趣低、學(xué)生的主觀能動性無法得到激發(fā),導(dǎo)致多數(shù)學(xué)生對算法的精髓理解不到位,只能機械地記憶算法的步驟,不能靈活地解決碰到的問題。如何根據(jù)學(xué)生的知識基礎(chǔ),通過課內(nèi)教學(xué)和課外學(xué)習(xí)的有機結(jié)合,激發(fā)學(xué)生積極思考、參與課堂討論,達(dá)到學(xué)生有效理解、分析與設(shè)計相關(guān)算法并加以靈活應(yīng)用的教學(xué)目標(biāo),是教師在教學(xué)過程中需要不斷深思的問題。
2.“三化一體”的教學(xué)模式
2.1算法引入“例題化”
經(jīng)典算法的基本概念、基本原理和基本方法及其實際應(yīng)用是本門課程的教學(xué)重點,因此算法分析與設(shè)計的理論學(xué)習(xí)和解決實際問題是密切相關(guān)的。為了使抽象的算法變得具體化、形象化,便于學(xué)生體會和理解,并增強其學(xué)習(xí)興趣,算法設(shè)計與分析課程的教學(xué)組織需要精選典型的教學(xué)實例。
教學(xué)內(nèi)容“例題化”的指導(dǎo)思想就是將知識點融匯在具體的、貼近生活的例題中,通過具體實例讓學(xué)生理解算法的基本思想、分析原理、基本概念、適用條件等,提高學(xué)生的學(xué)習(xí)興趣及主觀能動性,加強師生問的互動。在精選實例的過程中,尤其注重培養(yǎng)分析及解決問題的思想方法,按照“設(shè)計例題-提出問題-分析問題-開展算法設(shè)計-進(jìn)行算法比較-得出結(jié)論”的講授層次,形成各環(huán)節(jié)精密銜接的講授主線。在啟發(fā)學(xué)生提出問題的教學(xué)實例的設(shè)計上下功夫,就能引人人勝,激發(fā)學(xué)生思考,產(chǎn)生互動效果,然后在整個教學(xué)過程中層層展開、有序遞進(jìn),通過比較、思考和消化,就能使學(xué)生較好地接受所學(xué)知識。
算法分析與設(shè)計課程涉及的_些經(jīng)典案例的代碼已經(jīng)存在,但在教學(xué)的實際使用中并不一定能夠原樣照搬,這就要引導(dǎo)學(xué)生在積極思考之后,在應(yīng)對實際的問題時,通過改進(jìn)大體相似的算法進(jìn)行更深入的學(xué)習(xí),獲得深層次的知識。因此,在講授算法設(shè)計與分析的經(jīng)典技術(shù)和案例的同時,進(jìn)一步結(jié)合項目工程中的實例和當(dāng)前算法研究中的最新進(jìn)展來闡述該課程的理論和應(yīng)用背景。例如,社交網(wǎng)絡(luò)中的結(jié)構(gòu)分析、生物信息學(xué)中的基因序列比對、智能交通中的目標(biāo)識別與追蹤等都是目前算法的熱點研究課題。這些研究領(lǐng)域不僅要求編制高效的算法,還要關(guān)注相關(guān)問題的求解算法的有效性和高效性。因此,在進(jìn)行算法設(shè)計與分析課程教學(xué)的同時,通過有選擇地結(jié)合這些領(lǐng)域的研究熱點,將該課程的教學(xué)內(nèi)容置于具有時代背景的實際問題環(huán)境中,促進(jìn)學(xué)生對所學(xué)知識的重要性和應(yīng)用背景的認(rèn)可,才能更好地激發(fā)其求知欲和探索欲。
2.2算法講解“多樣化”
如何在課堂上把抽象的算法講解變成形象具體的實例分析,提高學(xué)生對算法的感性認(rèn)識,使用多樣化的教學(xué)方法必不可少。在課堂講授中,要求教師多采用問題導(dǎo)人式、啟發(fā)式、討論式等教學(xué)方法,以問題講解為核心、以算法思想與方法教學(xué)為重點、以解決應(yīng)用問題為目標(biāo),不僅要注重算法思想的表述和算法的分析及實現(xiàn),還要強調(diào)算法的比較,以促成學(xué)生掌握算法設(shè)計與分析的基本理論和方法,培養(yǎng)學(xué)生抽象思維、計算思維力、發(fā)散思維等方面的能力。
在實施多樣化算法講解時,第一個重要環(huán)節(jié)就是如何設(shè)計一系列具有啟發(fā)性的提問,并圍繞教學(xué)重點和難點,前后呼應(yīng)形成閉合回路。其中的問題應(yīng)蘊含:算法的起源是怎樣的、可解決的問題是哪些;算法的基本思想、組成要素的理解;算法的應(yīng)用場景;與其他算法的區(qū)別;時間和空間復(fù)雜度的要求等。通過這些環(huán)節(jié)的學(xué)習(xí)使學(xué)生達(dá)到舉一反三、觸類旁通、掌握算法所體現(xiàn)的思想的教學(xué)目標(biāo)。尤其是引入生活中具體實例,可提升學(xué)生面對具體問題時應(yīng)用所學(xué)知識給出切實可行的解決方案的應(yīng)用能力。
同時,在每一堂課中留出專門的時間開展課堂討論,鼓勵學(xué)生就教師或同學(xué)提出的問題進(jìn)行討論,然后互相補充或質(zhì)疑。教師則通過仔細(xì)分析學(xué)生發(fā)言,從學(xué)生模糊的表達(dá)中提取出實質(zhì)性的觀點,指正其存在的問題,并對其中合理的部分給予充分的肯定。每次授課留出適量的時間進(jìn)行課堂討論,調(diào)動學(xué)生的學(xué)習(xí)興趣,推動學(xué)生由被動學(xué)習(xí)變成主動學(xué)習(xí),使教與學(xué)有效呼應(yīng)。
“多樣化”的教學(xué)方法相結(jié)合,在教學(xué)觀念上強調(diào)了兩個轉(zhuǎn)變:一是從以“教”為中心轉(zhuǎn)到以“學(xué)”為中心;另一個是從知識傳授到能力培養(yǎng),促成了從灌輸知識為主到提高能力為主的教學(xué)目標(biāo)的達(dá)成,提升了課堂教學(xué)效果,將課堂變成了師生共同活動的場所。
2.3算法分析“差異化”
算法性能分析是衡量算法優(yōu)劣的重要過程,通過算法分析可以進(jìn)一步幫助學(xué)生理解影響算法性能的常見因素,有助于其在下一次算法設(shè)計過程中形成更優(yōu)秀的算法。因此,在教學(xué)過程中,在講授新的算法時,教師除了注意講解算法本身,還要強調(diào)多種算法的分析與對比的有機結(jié)合,培養(yǎng)學(xué)生的發(fā)散思維能力。例如,在算法講解的例題選擇方面,設(shè)計具有多種求解方案的例題,要求學(xué)生使用不同種類的算法進(jìn)行描述。通過比較學(xué)習(xí),加深學(xué)生對不同算法的理解,更好地消化理解不同算法的設(shè)計思想的實現(xiàn)細(xì)節(jié),體會不同算法的差異。例如,教師會分別用貪心算法、回溯法、分支限界法來分析解決最短路徑問題,使學(xué)生更深入、直接地理解算法的作用,做到舉一反三、增強體會,激發(fā)學(xué)生的探索欲望,也使學(xué)生理解到算法設(shè)計與分析理論授課時重點強調(diào)時空效率的原因,并在這方面養(yǎng)成自覺的學(xué)習(xí)習(xí)慣。
另外,還要啟發(fā)學(xué)生如何在實際的問題中選擇和運用多種算法。例如,有些問題可以使用貪心算法解決,也可以使用動態(tài)規(guī)劃算法解決。那么在實際的解決問題中,到底使用哪個呢?那就必須根據(jù)實際問題及其要求進(jìn)行選擇。
在教學(xué)過程的設(shè)計方面,也充分考慮到學(xué)生知識基礎(chǔ)的差異性,遵循循序漸進(jìn)的策略,按照基礎(chǔ)性、綜合性兩個層次進(jìn)行分層次教學(xué),讓學(xué)生在難度循序漸進(jìn)的過程中完成分析和設(shè)計任務(wù),期望隨著課程的深入進(jìn)行,培養(yǎng)學(xué)生的興趣。
3.結(jié)語
算法分析與設(shè)計能力的養(yǎng)成對計算機類人才的培養(yǎng)具有很強的支撐作用,如何在教學(xué)中注重總結(jié)規(guī)律,使學(xué)生舉一反三、有效應(yīng)用是教學(xué)獲得成功的關(guān)鍵。在算法分析與設(shè)計教學(xué)中對“三化一體”的教改思路進(jìn)行了探索,提出了“圍繞問題的講解,將算法思想、算法表述、算法實現(xiàn)、算法比較有機結(jié)合”的課程建設(shè)思路,研究了“三化一體”的教學(xué)模式,重點圍繞著算法引入“例題化”、講解“多樣化”、算法分析“差異化”,并融“教、學(xué)、用”為一體的教學(xué)活動進(jìn)行研討。實踐證明,基于“三化一體”的“教、學(xué)、用”措施互為補充,提升了課程的教學(xué)質(zhì)量。