1968年,高德納(Donald E. Knuth)出版了經典的《計算機編程藝術》,提出了數據結構及算法的概念,從此數據結構與算法與軟件編程緊密聯系,讓程序設計人員也登上了藝術的殿堂??梢哉f,數據結構與算法在當今各種應用軟件和系統軟件的開發中都具有舉足輕重的地位。我們每天手持的移動通訊設備,工作學習用的筆記本電腦,信息訪問的萬維網都有數據結構與算法應用其中。因此,國內外高校的軟件工程和計算機等專業都把數據結構與算法作為一門核心的專業基礎課程進行教學,為后續的相關課程的學習打下堅實的基礎。
一數據結構與算法教學中存在的問題
國內多數高校在數據結構與算法的教學中依然采用傳統的教學模式,一般存在以下一些問題。
第一,師資方面。教師普遍具有高學歷及較強的科研能力,所以課堂上的講授以理論知識為基礎,學科發展為導向,追求專業知識的完備性,不問軟件行業的需求。
第二,講授方法。教師在授課過程中容易只專專注于自顧自地講解教材上的抽象的數據結構以及算法思想,不顧及學生的接受程度和融入課堂的積極性,更忽視學生課后學以致用的實踐能力的培養,從而陷入“教師講,學生被動接受”,甚至是“教師講,學生睡”的填鴨式教學誤區[1]。
第三,人才培養。缺乏與軟件產業界的聯系,依然把講授理論放在首位,忽視工程實踐性和應用環節,不利于學生對課程內容的掌握和工程實踐能力的培養。
第四,教材內容。內容偏向理論,更新緩慢,由于內容較抽象,學生閱讀后,通常只能停留在理解層面,難以付諸工程實踐。
第五,實驗環節。相對薄弱,通常實驗的目的為驗證書上的理論知識,缺乏創新能力和綜合分析、解決問題能力的培養。
第六,素質培養。本門課程涉及的內容比較多,課上不可能涵蓋所有知識點。學生由于惰性,多數只是掌握書本理論,機械地實踐后,不再更多地領悟專業知識背后的思想。同時,缺乏團隊合作意識,不能及時分享學習心得,導致專業素質提高的緩慢。
二CDIO工程教育模式在數據結構與算法中的實施方法
針對這樣的情況,哈爾濱理工大學軟件學院從2007年就開始研究CDIO教學模式的相關理論,在數據結構與算法的教學中取得了初步的研究成果?!癈DIO”是構思(Conceive)、設計(Design)、實施(Implement)、運行(Operate)4個英文單詞的首字母縮寫,它是“做中學”原則和“基于項目的教育學習”的集中體現,是當今國際高等工程教育的一種創新模式[2]。我們學院CDIO工程化的教學理念的具體踐行方法如下。
1建設具備高水平工程化素質的教師隊伍
注重教師自身工程素質的提高,使其能夠勝任CDIO課程體系的教育模式[3]。完善與國內外著名企業開展師資培訓與交流合作的機制,一方面選派專職教師到企業研修,豐富專業教師的工程實踐經歷和經驗,獲取最新的技術信息,保證學生學以致用。另一方面建設由企業高級工程技術人員組成的兼職教師隊伍,解決教師隊伍工程實踐經驗薄弱的問題,提高工程教育教師隊伍的整體素質。
2以培養軟件卓越工程師為目標
基于CDIO的理念,我院提出“基于校企合作\"2+1+1\"模式軟件卓越工程師教育培養的研究與實踐”。面向軟件行業,面向未來軟件工程的需求和對未來軟件工程師的素質要求,培養造就一大批能夠適應和支撐軟件產業發展、實踐能力強、創新能力強、具有追求卓越的精神和態度、具有國際競爭力的高質量軟件卓越工程師,建立社會主義市場經濟條件下的現代高等工程教育體系。
3以學以致用為導向
學院每門專業課程的設置都是為了更好地培養軟件卓越工程師。軟件行業素有更新快的特點,而數據結構與算法這門課程是未來軟件工程師以不變應對日新月異軟件技術的內功。在教學中強調課程的重要性,在學習每一部分內容前,首先明確學習目標,告訴學生在什么地方應用,讓同學們帶著目的、本著學以致用的原則來汲取知識,減少學生學習中存在的迷茫,切實提高學生分析和解決實際問題的能力。
4以案例為中心的教學
為了切實提高學生專業學習的興趣和解決實際問題的能力,依據CDIO工程化模式提出的“做中學”和“以案例為導向”的教學方法,數據結構與算法課程本身具有抽象難于理解的特點,結合應用相應理論的有實際意義的案例進行教學,使學生能夠有目標地學習和實踐,更好地掌握、完善和運用理論知識。數據結構與算法相關知識點及案例設置如下表1所示。

5以實戰平臺為驅動力實踐教學
鼓勵學生參加軟件編程競賽,激發學生的強烈的求知欲和自我學習興趣。通過各種級別的比賽,豐富了實踐教學的形式,讓學生可以有針對性地學習,提高了學生的參與性和主動性。我們鼓勵學生參加校、省級ACM比賽、全國軟件專業人才設計與開發大賽軟件大賽和全國大學生ITAT程序設計大賽等比賽。通過這些實戰比賽,有效地提高了學生的工程實踐能力,取得了很好的效果。本院學生在過去的三年里,在相關比賽中已經取得非常優異的成績。通過比賽獲得證書的同學,編程能力會有超出常人的進步,增加了他們就業的砝碼,大賽獲獎同學現在有的在百度、騰訊、華為等大公司工作,很好地適應了工作環境。我們學院這兩年也組織了兩屆ACM程序設計大賽,通過大賽向廣大同學宣傳了軟件設計比賽和相關數據結構與算法的知識,提高了他們學習這門課程的熱情,更好地走上軟件卓越工程師之路。在實驗教學環節中,除了安排綜合案例的設計之外,我們也從競賽的試題中選擇適合學生設計的題目,提高他們解決實際問題的能力,有效地夯實了他們的基本功。
6提高軟件工程專業素質
首先,我們注重培養學生良好的軟件開發習慣。在相關數據結構與算法的實施過程中,要養成加注釋、“見名知意”、代碼的可讀性等良好習慣。其次,注重軟件工程思想的培養,很重要的一個思想就是“分而治之”,問題定義、功能劃分、數據結構選取、算法設計、編碼和測試基本解決軟件設計問題的工程化思想要時刻牢記。同時,還要培養學生的團隊意識,讓大家懂得分享知識的重要性,課下相互討論,彌補思路上的盲點。我們為學生建立了網上的QQ群,如軟件學院ACMer、哈理工大學軟件設計群等。這些平臺的搭建使學生更好地交流,培養了他們與人溝通的能力。最后,最重要的一點就是激發學生主動獲取知識的求知欲,最重要的是我們用CDIO教育理念和培養軟件卓越工程為目標完成教學之后,學生癡迷于鍵盤和鼠標,真正獲取了能夠捕食的“漁”和“獵槍”———工程實踐的能力。
三教學效果
變被動學習為主動學習,提高了學生的參與度和主動性,明確了學習動機,學習效率大幅度提高。學生在課堂上積極主動地思考,課下能夠主動找老師提出自己的設計方案,同老師討論案例問題的優化思路。能夠在老師的指導下,參與到實戰性的程序競賽中,把學到的數據結構與算法的知識應用到其中。通過2009和2010級兩屆學生的培養,使他們夯實了成為軟件卓越工程師的基本功,為后續專業方向課程(如:J2EE、NET、嵌入式、物聯網等)的開設打下堅實的基礎,學生們也可以更快地在掌握相關方向,設計出相應軟件。在CDIO工程化的教育理念下,學生的主觀創新能力得到充分提高。在創新實驗設計中有的同學將案例“旅游信息導航系統”拓展為“智能旅游一站式服務系統”,拓展了目前軟件的功能,有很好的應用前景。
參考文獻
[1]金靜,楊朝霞.現代教學模式與CDIO理念在數據結構課程中的實踐[J].高等教育,2011(5):144-146.
[2]顧佩華,沈民奮,李升平.從CDIO到EIP-CDIO:汕頭大學工程教育與人才培養模式探索[J].高等工程教育研究,2008(1):12-20.
[3]于波,李陽陽. CDIO工程教育模式在Windows CE嵌入式系統教學中的應用研究[J].大慶社會科學, 2010(6):