國家973信息技術(shù)與高性能軟件基礎(chǔ)規(guī)劃項目首席科學(xué)家顧鈞教授和中國工程院院士李國杰教授指出:“我國的軟件開發(fā)要算法先行,這樣才能推動軟件技術(shù)的研究與開發(fā),提高我國企業(yè)軟件產(chǎn)品的技術(shù)競爭力和市場競爭力”。算法設(shè)計與分析是計算機專業(yè)的核心課程,是一門理論性與實踐性相結(jié)合的課程。通過課程學(xué)習(xí)學(xué)生應(yīng)掌握常用算法設(shè)計策略,提高軟件開發(fā)設(shè)計和解決計算機科學(xué)與工程領(lǐng)域中較復(fù)雜的實際問題的能力;同時通過學(xué)習(xí)算法復(fù)雜性分析,培養(yǎng)學(xué)生在軟件開發(fā)中注重效率的理念。
1亟待改進的現(xiàn)狀
在我校本科生課外實踐、畢業(yè)設(shè)計和研究生考試閱卷工作中,發(fā)現(xiàn)學(xué)生算法設(shè)計能力普遍欠缺,其它普通高校也有類似情況[1]。教材是體現(xiàn)教學(xué)內(nèi)容和教學(xué)方法的知識載體,是進行教學(xué)的基本工具,分析現(xiàn)有的算法設(shè)計與分析教材,不難發(fā)現(xiàn)出現(xiàn)以上現(xiàn)象的根本原因?,F(xiàn)有教材定位往往偏高,注重理論講解高深,適合研究生、重點院校本科生使用,這樣的教材往往導(dǎo)致學(xué)生對算法設(shè)計課程產(chǎn)生畏懼心理?,F(xiàn)有教材對算法策略的講解多以問題為章節(jié),沒有概括和歸納算法策略的特點,及在同一策略下不同問題的應(yīng)用差別,學(xué)生很難系統(tǒng)地掌握算法策略的應(yīng)用技能。另外,現(xiàn)有教材普遍只側(cè)重算法效率分析,而缺乏提高效率方法和技巧的介紹,綜上所述,深感有教材建設(shè)的必要性。
2本教材建設(shè)宗旨及其結(jié)構(gòu)設(shè)計
根據(jù)現(xiàn)狀分析,本教材建設(shè)以“適用性實用性”為宗旨,定位于普通高校計算機專業(yè)本科學(xué)生,以素質(zhì)教育的為需求,注重培養(yǎng)學(xué)生解決實際問題的能力?;诖俗谥急緯炙膫€層次:
第一篇“引入篇”包含兩章,從問題求解的步驟開始認識算法及其重要地位、并學(xué)習(xí)算法設(shè)計的基本過程、算法效率分析方法;為提高學(xué)生的學(xué)習(xí)興趣,還對當前主流算法及軟件進行了簡要介紹(此節(jié)可作為選修)。
第二篇“基礎(chǔ)篇”,對算法設(shè)計基本工具循環(huán)、遞歸機制和數(shù)據(jù)結(jié)構(gòu)的應(yīng)用技巧和提高算法效率的方法做了講解。
第三篇“核心篇”包含兩章,主要介紹了常用的幾種算法策略,如:枚舉法、遞推法、分治法、貪婪算法、動態(tài)規(guī)劃及與圖搜索有關(guān)的算法策略,并對算法策略及其應(yīng)用進行了總結(jié)比較。
第四篇“應(yīng)用篇”,每節(jié)針對同一問題采用不同的數(shù)學(xué)模型、不同數(shù)據(jù)結(jié)構(gòu)或不同的算法策略進行算法設(shè)計,并進行算法效率上的分析比對。
3教材建設(shè)特色
教材建設(shè)遵循《中國計算機科學(xué)與技術(shù)學(xué)科教程2002》(“China Computing Curricula 2002”,簡稱“CCC2002”)知識體系,屬于算法和復(fù)雜性(AL)的范疇。以AL1.基本算法分析和AL2.算法策略作為教材核心。
教材建設(shè)中吸收國內(nèi)外同類教材[2] [3][4]的優(yōu)點并加以消化,力爭淺顯易懂地講解深奧的算法設(shè)計策略和分析方法。在體現(xiàn)“適用性實用性”的宗旨下,本書和現(xiàn)有算法設(shè)計的教材相比主要特色有:
(1) 重系統(tǒng)性,符合認知規(guī)律
本教材結(jié)構(gòu)嚴謹,章節(jié)劃分合理、層次分明。特別是教材第三篇“核心篇”摒棄同類教材中根據(jù)問題劃分章節(jié)的方法,通過對算法策略特點的概括和歸納,以同一策略下的應(yīng)用差別來劃分章節(jié),能反映知識點間的聯(lián)系,符合認知規(guī)律。同時,在各章末尾對算法進行比較、總結(jié),使學(xué)生能方便、全面地掌握算法策略的本質(zhì)及其應(yīng)用體系。
(2) 重啟發(fā)性,體現(xiàn)創(chuàng)新意識
有些算法設(shè)計教材中的例題,先給出問題的算法設(shè)計結(jié)果,再去講解它們。這樣做只能使學(xué)生“知其然”而“不知其所以然”。本書中例題要經(jīng)過問題分析、數(shù)學(xué)建模、數(shù)據(jù)結(jié)構(gòu)設(shè)計和算法設(shè)計后,才給出算法和算法分析。這樣講解富有啟發(fā)性,利于培養(yǎng)學(xué)生“設(shè)計”算法的能力,而不是“記憶”算法的能力。同時,改變學(xué)生被動接受知識的習(xí)慣,養(yǎng)成主動學(xué)習(xí)的意識。
(3) 重適用性,提高學(xué)習(xí)效率
第二篇“基礎(chǔ)篇”是從程序設(shè)計到算法設(shè)計承上啟下的內(nèi)容,對問題求解的基本方法、算法基本工具的使用及提高算法效率的基本技巧做了必要的總結(jié)、歸納,相信這些內(nèi)容會給普通院校的廣大學(xué)生有較大的裨益,可以從根本上促使其打好學(xué)習(xí)算法設(shè)計的基礎(chǔ),提高學(xué)習(xí)效率。
(4) 重開放性,培養(yǎng)學(xué)科興趣
第一篇中對現(xiàn)代算法的概覽,旨在擴大學(xué)生的知識面,提高學(xué)生對算法設(shè)計學(xué)習(xí)的興趣。教材中還介紹了從算法到程序轉(zhuǎn)換中的常見錯誤和注意事項,引導(dǎo)學(xué)生不能僅停留在形式化的算法描述階段,而是要大膽上機實現(xiàn),檢驗算法設(shè)計的結(jié)果。這樣在提高學(xué)習(xí)本學(xué)科興趣的同時,還能盡快提高學(xué)生的實踐能力。
(5) 重實踐性,拓寬思維空間
教材中介紹的算法設(shè)計方法與現(xiàn)代的編程方法步調(diào)一致,有利于激發(fā)學(xué)生問題求解的欲望,增強綜合應(yīng)用能力。第四篇“算法設(shè)計實踐”,每節(jié)中針對同一問題采用不同的數(shù)學(xué)模型、不同數(shù)據(jù)結(jié)構(gòu)或不同的算法策略進行算法設(shè)計,旨在擴展學(xué)生解決問題的思路,促使學(xué)生靈活運用算法知識,而不是生搬硬套教材中的算法。同時,也可以通過對多種算法設(shè)計的分析比較認識算法的優(yōu)劣。
4教材建設(shè)成果
教材已于2006年3月由清華大學(xué)出版社出版。教材出版后雖然僅使用一次,但教材初稿已多次作為算法設(shè)計與分析課程的講稿,學(xué)生使用后普遍反映良好,他們認為教材將復(fù)雜的算法思想進行了高度的概括歸納,以簡潔的方式呈現(xiàn)給讀者,具有易讀、易懂性,實例豐富,非常實用。省內(nèi)其它院校進修的教師也認為這個教材(講稿)內(nèi)容充實,第四篇是全書的一個亮點,非常有利于提高學(xué)生的算法設(shè)計應(yīng)用能力;教材沒有過多的算法注釋,為啟發(fā)式、探究式、研究式教學(xué)方法提供了好的教學(xué)平臺。2007年6月該教材已被列入國家“十一五”規(guī)劃教材。
參考文獻
[1] 李海倫,唐全,“程序設(shè)計”課程教學(xué)改革的研究與實踐——加強算法設(shè)計教學(xué),提高學(xué)生編程能力《 計算機教育 》2005年 7期21-22
[2] 王曉東主編《計算機算法設(shè)計與分析(第二版)》,電子工業(yè)出版社,2004
[3] (沙特)阿蘇外耶著,吳偉昶等譯,《算法設(shè)計技巧與分析》,電子工業(yè)出版社,2004.8
[4] Sara Baase,Allen Van Gelder,《計算機算法——設(shè)計與分析導(dǎo)論》第三版,高等教育出版社,2001.6