摘 要算法分析與設計不僅是計算機專業的專業課,也是與計算機有關的非計算機專業的專業課。本文首先分析該課程的特點,接著分析面向非計算機專業講授該課程的特點,最后就教學內容、教學方法與教學手段3個方面的教學實踐進行總結與探討。
關鍵詞 算法;教學方法;課程特點
中圖分類號:G642 文獻標識碼: A文章編號:1671-489X(2007)07-0021-03
Research of Algorithm Teaching for Non-computer Science Specialty//Liao Bin,Hu Jinlong,Hu Jie
Abstract The Algorithm is a specialized subject not only for computer science specialty but also for non-computer science specialty having relationship with computer science. This paper analyzes this subject characteristic ,and analyzes this subject characteristic for non-computerscience specialty. At last it points out conclusion coming from teaching exercises on teaching content, teaching methods and teaching technique.
Key wordsalgorithm; teaching method ;subject characteristic
Author’s address
1. College of Science, South China University of Agriculture, Guangzhou 510640
2. South China University of Technology, Network Research Center ,Guangzhou 510640
3. Engineering College, South China Agriculture University,Guangzhou 510640
計算機算法分析與設計是一門面向設計,處于計算機學科核心地位的教育課程,是高校計算機專業高年級學生與研究生的一門重要專業課程,同時也是一門與計算機有關的非計算機專業如管理信息、系統工程、應用數學與計算數學的專業課。此外,隨著計算機技術在各行業的廣泛、深入應用,越來越多的其他非計算機專業學生選修該門課程。
由于非計算機專業學生的學科背景、前期課程的掌握程度、前期課程的設置等與計算機專業的學生存在很大不同,因此對非計算機專業學生講授該課程時,與該課程的傳統教學方式相比,在教學信息組織、教學難點、教學手段、實驗要求等問題上存在較大差異。本文首先分析算法分析與設計課程的特點,接著分析面向非計算機專業講授該課程的特點,最后就教學內容、教學方法與教學手段3方面的教學實踐進行總結與探討。
1 課程的特點
計算機對實際問題的求解過程如圖1所示。

在此求解過程中,設計與分析算法是從提出問題直到解決問題的最關鍵步驟。因此,掌握算法的設計與分析尤顯重要。
該課程的特點為:
(1)算法分析與設計具有很強的理論性,對數學、數據結構等知識的掌握要求較高,對學生的抽象思維能力和邏輯推理能力要求較高。算法和數據結構有著密不可分的聯系,著名計算機科學家沃思更是提出“數據結構+算法=程序[1]” 的觀點。每個算法都是建立在某種數據結構基礎之上的,一個算法不可能脫離數據結構孤立存在。因此,學好算法的前提條件是掌握數據結構的內容。此外,在算法設計、分析中還需相關的數學知識、數學方法,其理論性顯而易見。
(2)算法分析與設計的掌握要求理論與實踐相結合。實際上,一個具體問題可以有多種解決方法,因此在設計算法時要首先分析算法的復雜性,在各種不同的算法中選擇合乎實際情況要求的、復雜性最低的算法進行實現,因此實踐性是課程必然的要求。
(3)算法分析與設計的內容具有綜合性、廣泛性、系統性與發展性。計算機科學各學科領域及相關應用軟件設計都涉及到算法,算法的內容與數學模型、數據結構、離散數學、程序設計、計算方法構成了一個有機的整體。隨著科技的發展,算法研究不斷取得新的突破。
根據該課程的特點可知教學的重點與難點在于:如何在有限的教學時間內講清基本理論知識,并將研究新動向融匯其中,使學生理解和掌握算法設計的主要方法,培養學生對算法的計算復雜性進行正確分析的能力。
2 向非計算機專業講授“算法分析與設計”的特點
非計算機專業學生在選修“算法分析與設計”課程之前,一般只修讀過程序設計、數據結構,且對此兩門課程的掌握程度與計算機專業相比有一定的差距,因此對非計算機專業講授算法分析與設計課程有如下特點:
(1)非計算機專業的前期課程設置不一定能與該課程相匹配,因此,在該課程講授之初,需要對程序設計、數據結構等知識進行簡單的回顧,進行與該課程的銜接。
(2)計算機專業的算法分析與設計重在理論分析部分,算法的實現不是難點。但是對非計算機專業學生,算法的實現成為一個難點。因此需要在教學與實踐中作適當的調整,實驗從易到難,平緩過渡,務求使學生真正掌握算法設計的思想并能用于解決實際問題。
(3)該課程作為非計算機專業的選修課,學時有限,因此要精選內容,務求以有限、精簡的內容涵蓋基本知識,通過對算法設計策略的反復應用,使學生牢固掌握算法設計的基本策略,以期收到融會貫通之效。
3 教學實踐
針對上述對非計算機專業講授該課程的特點,筆者在教學實踐中采用與以往的傳統講授不同的方法,通過內容選取、教學難點與重點適當調整、教學手段改進、實驗要求細化等方法,在有限的課時下完成教學任務,并收到良好的教學效果。
3.1 教學信息的組織
由澳大利亞教育心理學家J . Sweller 提出的認知負荷理論[2]認為:認知負荷分可為內在的認知負荷和外在的認知負荷兩類。其中內在的認知負荷單獨來源于將要學習的內容的內在特征(如難度) ,不能被教學設計所改變。外在的認知負荷源于用于呈現信息給學生的教學材料,可通過重新組織信息來改變。如果內在認知負荷很高(即復雜困難的學習內容) , 同時外在認知負荷也很高, 那么, 全部認知負荷將超過總的智力資源, 學習可能失敗。
因此,可以在包含必須掌握的教學內容的基礎上,通過組織合適的教學信息,使學生專注于新教材學習內容,增加學習的成果。例如,在以具體實例詳述各種算法的設計思想、適用性以及算法設計要點時,盡量選擇易于被學生理解的實際問題進行分析,如大整數的乘法、0-1背包問題、最優裝載、旅行售貨員問題[3]等,這些問題本身易于理解,可以使學生更多地關注于算法策略的選擇,以及相應的設計思想與設計技巧。并通過重復選擇經典問題,使學生深刻地的體會到一個問題可以用多種設計策略求解,通過對解同一問題的不同算法的比較,使學生更容易體會到每一種具體算法的設計要點。如對0-1問題,可以采用動態規劃算法、回溯法、分支限界法進行求解,通過分析、比較與實現,學生更易掌握各算法的設計思想,并能融會貫通。
3.2 教學方法
在教學中,采用啟發式的教學方法 ,輔以其它教學法,促使學生積極思考,使他們主動掌握知識,以達到較好效果。在講課中,首先系統講解基本理論思想,反復強調重點難點,接著啟發性的講解、引申知識內容,給學生提供一個發散的思維空間。同時算法實驗作為算法實踐的體現形式,在算法教學中,可以起到鞏固基本知識、深化理論思想的作用。
在實驗內容的選取上,遵循由易到難的原則:初期的實驗以驗證性為主,中期與后期實驗將驗證性與綜合性實驗結合在一起。每個實驗以設計報告的形式進行,主要分三部分,第一部分為上機檢查,要求學生按照實驗要求,將其設計的算法進行編碼并通過編譯運行,對具體使用的語言與環境不做硬性規定,但鼓勵學生盡量采用面向對象的思想。第二部分為算法分析,由學生分析問題、解釋其設計思路、分析算法復雜度,并給出實驗結論,進行實驗總結。第三部分為發散思維部分,選取在教材中涉及到、但未深入講述的內容,以問答題、思考題的形式進行提問,以學生查找資料、小組討論的形式完成,提高學生運用算法設計策略解決實際問題的能力,并鼓勵學生將此部分的習題進行算法實現。上述的第二、第三部分由實驗的設計報告體現。
3.3 教學手段
將傳統教學手段——黑板板書與多媒體教學相結合,充分利用傳統教學手段與現代教育技術的優點,把抽象難于理解的內容借助于多媒體技術直觀形象地展現;對于推理部分則通過黑板板書的形式,使學生能緊跟教師的思路,經過思考,真正地學會分析問題、解決問題。此外,充分利用網絡,將課件提供給學生以便于學生進行復習、回顧 ,并與學生進行即時交流,解答、討論問題,給學生提供更多的材料,激發學生的學習興趣,鼓勵學生進行更進一步地學習。
4 結束語
大學教育的一項重要任務是培養有創新能力的全面發展的人才。為此,在日常教學中,應該讓學生不僅能將所學的書本知識掌握,更重要的在于讓學生能將知識轉化成自己的智慧。授人以魚,莫若授人以漁。在算法教學中,最終的目的是奠定學生獨立設計與分析算法的堅實的理論基礎,并培養學生對算法的設計與分析的能力。為此,教師需要精心選擇、編排教學材料,正確地運用各種教學方法、教學手段,并充分利用來自于作業、實驗等途徑的教學反饋,充分發揮教師作用,達到教學目的,取得更好的教學效果。
參考文獻:
[1]Anany Levitin.算法設計與分析基礎[M].潘彥,譯.北京:清華大學出版社,2004:79-154
[2] J.Sweller.Cognitive load during problem solving Effects on learning[J].Cognitive Science, 1988, (12)
[3]王曉東.計算機算法設計與分析[M].北京:電子工業出版社,2005