何迎生 段明秀 周鐵 王從銀
摘 要 算法是計算機的“靈魂”,《算法設計與分析》對軟件開發(fā)有著不可替代的作用。針對該課程目前教學的實際情況和存在的問題,筆者結(jié)合多年教學經(jīng)驗 ,對課程的教學內(nèi)容、教學方法等進行改革,并且應用項目驅(qū)動式教學方法對該課程的實踐教學進行改革。
關(guān)鍵詞 算法設計與分析 算法 教學內(nèi)容 教學方法 實踐教學
中圖分類號:G64 文獻標識碼:A
算法是計算機的“靈魂”,它決定了計算機軟件性能的優(yōu)劣,因此,《算法設計與分析》是計算機科學與技術(shù)、軟件工程等信息類相關(guān)專業(yè)重要的基礎課程和核心課程。通過該課程的學習,讓學生掌握算法設計的基本策略,理解和掌握算法設計的主要方法,培養(yǎng)學生對算法的復雜性進行正確分析的能力、獨立分析和解決問題的能力,為將來從事軟件設計與開發(fā)或相關(guān)領域科學研究工作奠定堅實的基礎。
1算法設計與分析課程教學存在的問題
在多年的課程教學過程中,筆者發(fā)現(xiàn)有相當一部分學生對該課程的認識不夠,學習熱情不高,缺乏學習的主動性,甚至對該課程在計算機人才培養(yǎng)中的地位產(chǎn)生懷疑,由于這些問題的存在,從而導致課程教學效果不佳,課程的教學很難達到預期的目標。經(jīng)過調(diào)查和分析,我們發(fā)現(xiàn)造成這一狀況的原因主要表現(xiàn)為以下幾點:
(1)課程對先修課程的要求高:該課程需要學生具有較好的c/c++程序設計、離散數(shù)學、計算數(shù)學、數(shù)據(jù)結(jié)構(gòu)等先修課程的基礎。學生必須扎實掌握這些課程的基礎知識后,才能更好的進行算法的設計及實現(xiàn)。
(2)課程知識點多,內(nèi)容抽象,難度大: 本課程涉及大量的算法設計技術(shù)和方法,例如遞歸技術(shù)與分治法、貪心法、動態(tài)規(guī)劃法、回溯法、分支限界法等,而且都比較抽象,同時靈活性強,因此學生很難掌握。
2改革措施
為了讓學生更好的掌握算法設計方法,并且靈活運用這些方法解決實際問題,結(jié)合筆者多年的教學實踐經(jīng)驗,在教學內(nèi)容的選擇、教學方法的改進、實踐教學內(nèi)容的組織等方面進行了一些探索和改革,并取得了較好的效果。
2.1針對學生的實際情況,合理的選擇教學內(nèi)容
由于受生源質(zhì)量和前期基礎課程學習情況的影響,我校計算機專業(yè)學生離《算法設計與分析》課程對理論知識和編程能力的要求有一定的距離,因此選擇合適的教學內(nèi)容對提高教學效果就起著決定性的作用。我們的整體思路是“寧缺勿濫,精講細講,舉一反三”。
2.2采用多種教學方法,提高教學質(zhì)量
(1)采用案例教學法,讓抽象地算法具體化,激發(fā)學生學習興趣。
從實際的案例出發(fā)引入算法問題,通過抽象與總結(jié),使得抽象的算法變得具體,拉近課程與現(xiàn)實的距離,激發(fā)學生的學習興趣。例如在講解時間復雜度和空間復雜度時,我們以百度之星的嘟嘟熊數(shù)列為實例進行講解??吹竭@道題時,學生最容易想到的是常規(guī)的窮舉法,其時間復雜度O(n)。此時可以提問學生該方法有何缺陷有學生提出當n為109時存儲空間過大,于是進一步啟發(fā)學生應該如何去解決。通過引導,最后發(fā)現(xiàn)數(shù)列只會出現(xiàn)2種循環(huán)節(jié):1123581347和1459,序列的非循環(huán)字符最多20位,開辟的存儲空間30個足夠,算法的復雜度為0。通過此例的講解學生對時間復雜度就有了深刻的理解,顯然比純粹的介紹概念要生動得多。
(2)利用知識的相互聯(lián)系,為新知識的講解尋找一個切入點。
在講解知識點時,先從學生熟悉的內(nèi)容出發(fā),引入課程的知識要點,讓學生既了解課程間的相互聯(lián)系,又找到了知識的應用領域,通過知識的相互聯(lián)系,降低學習難度,培養(yǎng)學習興趣。例如在講解大整數(shù)乘法前,可以先引入RSA加密算法,既拓寬了知識面,又讓學生知道了大整數(shù)乘法的實際應用領域,從而激發(fā)了學生的學習興趣,讓學生變被動學習為主動學習,改善學習效果。
2.3實踐教學的改革
實踐教學環(huán)節(jié)可以強化學生對知識的理解,讓學生應用所學的知識解決具體問題,培養(yǎng)學生的實踐動手能力。通過實驗學生可以更好地掌握算法理論,并靈活應用算法思想來解決實際問題。在教學中,我們借助ACM程序設計平臺,把ACM競賽題目作教學內(nèi)容,充實了實驗教學的內(nèi)涵。ACM競賽題目趣味性強,知識覆蓋度高,非常適合作為課程實驗的補充和提高。為了提高學生的綜合應用能力,除完成課內(nèi)實驗外,學生還可以參與教師的各類研究課題,幫助教師完成科研任務,隨著項目開展, 學生有機會參與項目的分析、設計和實現(xiàn),在項目中發(fā)現(xiàn)問題,解決問題,培養(yǎng)了各方面的能力。
3結(jié)語
在《算法設計與分析》的教學實踐中,通過將算法理論與實際應用相結(jié)合,合理組織教學內(nèi)容,豐富教學方法和手段,采用項目驅(qū)動方式對實踐教學環(huán)節(jié)進行改革,增強了教學效果。
基金項目:
吉首大學教改項目 (2013JSUJGB15);
吉首大學重點實驗教改項目(2013SYJG015)。
參考文獻
[1] 王曉東.計算機算法設計與分析(第4版) [M].北京:電子工業(yè)出版社,2013.
[2] 劉振章.《算法設計與分析》課程教學探討[J].電腦知識與技術(shù),2014,10(9):1995-1996.
[3] 林 劼,戴 波.項目驅(qū)動型算法設計與分析課程教學方法[J].計算機教育,2014,9:69-71.
[4] 張海藩.軟件工程導論(第5版)[M].北京: 清華大學出版社,2013.