演算法設計與分析課程論文

演算法設計與分析課程論文

  “卓越工程師教育培養計劃”(簡稱卓越計劃)旨在培養一批創新能力強、適應經濟社會發展需要的高質量工程技術人才。在南通大學計算機科學與技術學院制定的軟體工程專業卓越工程師的培養計劃中,演算法設計與分析被設定為一門核心必修課程。透過該門課程的系統授課,重點培養學生的計算機問題求解能力,該能力是軟體工程專業學生成長為卓越工程師必備的一項核心競爭力。一個典型的計算機問題的求解一般需要經歷5個階段:①問題的分析和建模;②演算法設計方法和相應資料結構的選擇;③演算法的實現;④演算法的正確性證明和複雜度分析;⑤演算法實現的最佳化等。

  經過多輪的教學實踐發現,學生之間水平參差不齊是教學過程中面臨的最大問題。隨著高校招生規模的不斷增大,不同學生之間在基礎知識、智力水平、興趣愛好、學習動機和學習方法上存在較大的差異性。相同的教學內容,對於一些基礎較好的學生來說理解難度不大,但對於一些基礎較弱的學生來說,則難以理解。因此,如何尊重學生個性差異、發展學生個性特長,在考慮學生整體發展的同時兼顧學生的個性特長髮展,從而最終提高各個層次學生的綜合素質是演算法設計與分析課程的教學改革實踐中需要重點關注的問題。

  透過多次與學生的深入交流發現,學生在這門課程的學習過程中面臨如下問題:

  1)課程教學內容難度高。課程需要學生掌握常見的演算法設計策略,如分治法、動態規劃法和貪婪法等,對設計出的演算法能進行正確性證明和複雜度分析。很多知識點抽象層次高,需要學生具備一定的數學分析能力,同時,通常演算法內部邏輯比較複雜,因此需要學生具備較強的程式設計功底。筆者在講授這些知識點時,均假設學生具備一定的數學分析能力和程式設計基礎,但實際情況卻不容樂觀,很多學生在大一和大二的時候並未重視相關課程的學習,很多知識點都已經還給授課老師,在課堂上需要花費一定時間幫助學生回憶這些知識點。同時,部分學生因程式設計經驗較為匾乏,難以順利地將虛擬碼轉化成可執行的程式程式碼。

  2)學生問題求解能力弱。為輔助學生對知識點的理解,授課老師一般在例項選擇時均採用一些經典例項,例如歸併排序、最小生成樹等。這些問題在一些預修課程(例如高階程式設計語言或資料結構)中均進行過講解,因此理解起來難度不大。但是,學生在上機實踐時,面對老師佈置的新問題,卻很難將學到的`知識進行靈活運用,難以選擇合理的演算法設計策略,並藉助熟悉的高階程式語言去解決。

  3)學生自主學習意識薄弱。該門課程本身課時較少(僅有犯學時),其中8學時為上機實踐,在剩餘的24學時內,僅能講授基本的演算法設計與分析策略。學生即使瞭解常見的演算法設計與分析方法,但現實生活中問題千變萬化,更需要學生靈活使用學到的知識。因此,要提高學習效果和實踐能力,需要學生在課外花費更多時間,閱讀相關資料和進行大量編碼。但是,授課過程中發現,真正能夠完成自主學習的學生並不多。一方面,很多學生長期受應試教育的影響,習慣於填鴨式的教學模式,同時,學習時具有較強的功利性,很多學生普遍有應付考試和及格萬歲的思想,有的學生甚至為了應付老師的作業檢查,大量抄襲作業,僅做一些表面上的修改來敷衍了事。另一方面,即使有少量同學對新知識比較好奇,願意自己去積極探索,但在選擇相關經典資料時經驗不足、效率較低,因此,需要有經驗的老師進行有效引導。

  目前高校很多教室都配有多媒體裝置,造成大部分專業課程均採用多媒體課件方式進行授課。多媒體課件雖然具有豐富的表現力、良好的互動性和較高的共享性,但與其他核心專業課程相比,演算法設計與分析課程的理論程度更高,數學推導較多,因此筆者認為,採用板書為主的教學方式可能會效果更好。為驗證該推測,對Leiserson教授和Demaine教授開設的麻省理工學院公開課的線上影片進行分析,發現他們在授課時,絕大部分教學內容均採用板書方式進行講解,透過在黑板上一步一步地推導,在一些關鍵節點上與學生充分互動,使得學生可以更好地掌握演算法設計與分析過程中的一些重要技巧。筆者在實際教學中透過精心設計板書,取得了較好的課堂效果。

  綜上所述,在學生水平參差不齊的情況下,針對演算法課程教學中存在的問題,提出了一系列教學改革措施以提高不同層次學生的計算機問題求解能力。其中將教學問題與教學改革措施的對應關係,以及教學改革措施與不同層次學生的對應關係進行總結。而且具備良好的交叉學科基礎和文化底蘊,能培養出滿足市場需要的複合型人才。

  如何使相關專業的教育教學滿足將來ICT產業的發展是個相當複雜的問題,希望筆者提出的一些改進措施能對資訊科學相關專業的工程教育具有參考意義,並對其他領域也有借鑑之處。

最近訪問