李桂玲,朱曉蓮,蔡之華,郭 艷,張 霞
(中國地質(zhì)大學(xué)(武漢)計算機學(xué)院,湖北 武漢430074)
隨著“質(zhì)量工程”的實施,高校計算機專業(yè)在人才培養(yǎng)方面做出了較大的貢獻(xiàn),但在實際中,畢業(yè)生滿足社會需求的針對性不夠明確,主要原因是現(xiàn)有教學(xué)模式不能滿足要求。CDIO工程教育模式是近年來國際工程教育改革的最新成果,國內(nèi)外的實踐證明CDIO模式先進(jìn)可行,適合工科教育教學(xué)環(huán)節(jié)的改革。
美國ACM/IEEE組織一直對世界計算機教育起著指導(dǎo)性作用。ACM/IEEE CS 2013報告中顯示,在計算機專業(yè)核心知識中,“數(shù)據(jù)結(jié)構(gòu)”排名前三。[1]計算機專業(yè)委員會的調(diào)研也顯示,IT項目主管認(rèn)為排在前三位的專業(yè)技能分別是:編程能力、數(shù)據(jù)結(jié)構(gòu)和算法。[2]針對計算機專業(yè)人才培養(yǎng)中的問題,鑒于“數(shù)據(jù)結(jié)構(gòu)”在計算機專業(yè)中的核心地位,以及在就業(yè)中屬于必備專業(yè)技能的重要性,我們將CDIO理念運用于“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)中,對該課程的教學(xué)進(jìn)行了探索和實踐。
CDIO是由美國麻省理工學(xué)院和瑞典皇家工學(xué)院等工程院校于2000年共同發(fā)起,通過幾年的研究、探索和實踐建立的一種先進(jìn)的工程教育模式。
CDIO代表著構(gòu)思(Conceive)—設(shè)計(Design)—實現(xiàn)(Implement)—運作(Operate),它以產(chǎn)品從構(gòu)思、研發(fā)到運行的生命周期為載體,讓學(xué)生以主動的、實踐的、課程之間有機聯(lián)系的學(xué)習(xí)方式獲取工程能力。
CDIO能力大綱包括四個層面:(1)技術(shù)知識和推理;(2)個人能力、職業(yè)能力和態(tài)度;(3)人際交往能力:團隊工作和交流;(4)在企業(yè)和社會環(huán)境下構(gòu)思、設(shè)計、實施、運行系統(tǒng)。[3]
我國自汕頭大學(xué)2005年引進(jìn)CDIO以來,教育部CDIO工程教育模式研究與實踐課題組全國CDIO試點工作組于2008年12月成立,目前有39所試點高校。國內(nèi)CDIO試點高校通過探索和實踐,建立了適合校情的人才培養(yǎng)模式,取得了良好的效果。[4][5]
“數(shù)據(jù)結(jié)構(gòu)”課程是計算機學(xué)科中的核心專業(yè)課,廣泛應(yīng)用于信息科學(xué)、系統(tǒng)工程、應(yīng)用數(shù)學(xué)及各種工程技術(shù)領(lǐng)域。它以程序設(shè)計語言和離散數(shù)學(xué)為其前修課,同時又是后續(xù)大量專業(yè)課程,如操作系統(tǒng)、數(shù)據(jù)庫、編譯原理、人工智能、圖像處理與模式識別等的基礎(chǔ)和前修課。
“數(shù)據(jù)結(jié)構(gòu)”課程的主要內(nèi)容包括:(1)線性結(jié)構(gòu):線性表、堆棧和隊列、串和數(shù)組;(2)非線性結(jié)構(gòu):樹和二叉樹、圖;(3)兩種常用操作:查找和排序。
該課程的教學(xué)目的是學(xué)會分析研究實際問題中數(shù)據(jù)對象的特性,并能根據(jù)問題的需要選擇適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)和存儲結(jié)構(gòu)以及相應(yīng)的算法,并掌握算法的時間分析和空間分析的方法,同時提高算法設(shè)計、算法描述和程序設(shè)計的能力。
該課程的理論性和實踐性都比較強,我們在教學(xué)中發(fā)現(xiàn),學(xué)生在學(xué)習(xí)這門課程時主要存在以下問題:(1)不容易理解課程中抽象的理論,包括一些算法,不會運用所學(xué)理論解決實際問題;(2)動手編程能力不高;(3)學(xué)生大多是在老師的安排下學(xué)習(xí),缺乏學(xué)習(xí)的主動性和探索性。
為改進(jìn)“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)效果,提高學(xué)生的動手實踐能力,我們將CDIO理念應(yīng)用于“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)改革中。在嚴(yán)格保證課程教與學(xué)內(nèi)容要求的前提下,將課程置身于計算機專業(yè)課程體系的大環(huán)境且處于核心的一環(huán),將“數(shù)據(jù)結(jié)構(gòu)”的學(xué)科知識與計算機拔尖創(chuàng)新人才所需具備的能力整合在一起,讓學(xué)生親自經(jīng)歷和體驗項目從需求、設(shè)計、實現(xiàn)到運行的完整的生命周期,讓學(xué)生在“做中學(xué)”、“做中懂”、“做中會”。[6]
與傳統(tǒng)的灌輸式教學(xué)不同,啟發(fā)式教學(xué)是啟而不發(fā),強調(diào)學(xué)生是學(xué)習(xí)的主體,啟發(fā)學(xué)生通過獨立思考去解決問題。常見的啟發(fā)式教學(xué)方法有:問題驅(qū)動法、創(chuàng)設(shè)情境法、行為驅(qū)動法等。
例如,二叉樹是一種重要的非線性結(jié)構(gòu),哈夫曼編碼是二叉樹的一個經(jīng)典應(yīng)用。在教學(xué)中首先提出問題:通信中電文如何編碼?常見的一種編碼方式是等長編碼,給出一段電文,對其進(jìn)行等長編碼,啟發(fā)學(xué)生思考:等長編碼有何缺點?如何改進(jìn)?從而引出哈夫曼編碼。哈夫曼編碼分為兩步,第一步構(gòu)造哈夫曼樹,第二步對哈夫曼樹進(jìn)行編碼。接著給出哈夫曼樹的定義,引出帶權(quán)路徑長度(WPL)的概念,并啟發(fā)學(xué)生思考:如何構(gòu)造哈夫曼樹?通過分析,給定n個權(quán)值,哈夫曼樹是含n個葉子結(jié)點的只有度為0和2的WPL最小的二叉樹;要滿足WPL最小,則權(quán)值越大的葉子結(jié)點應(yīng)該離樹根越近。由此引出哈夫曼樹的構(gòu)造算法,并通過實例用Flash動畫演示哈夫曼樹的構(gòu)造過程。接下來介紹哈夫曼樹的編碼規(guī)則,對哈夫曼樹進(jìn)行編碼,并證明哈夫曼編碼是最優(yōu)前綴編碼。據(jù)此,對前面給出的電文進(jìn)行哈夫曼編碼,并將該電文的哈夫曼編碼長度與等長編碼長度作比較,證明哈夫曼編碼的優(yōu)越性,也完整地解決了教學(xué)開始時提出的電文編碼問題。
在教學(xué)中,我們也注重啟發(fā)學(xué)生將所學(xué)的知識進(jìn)行拓展,從而解決其他相關(guān)的問題。例如,表達(dá)式的計算是堆棧的經(jīng)典應(yīng)用,課堂上的講授以算術(shù)表達(dá)式為例,介紹完后啟發(fā)學(xué)生思考如何應(yīng)用堆棧的操作設(shè)計算法,對邏輯表達(dá)式和關(guān)系表達(dá)式求值。
項目式教學(xué)是以教師和學(xué)生共同參與,學(xué)生組成小組共同完成一個項目。項目式教學(xué)的特點是以項目為主線、以教師為主導(dǎo)、以學(xué)生為主體,讓學(xué)生在項目的實踐活動中體驗“做中學(xué)”、“做中懂”,從而“做中會”。[7]由于“數(shù)據(jù)結(jié)構(gòu)”課程理論比較抽象,實踐性比較強,我們采用項目式教學(xué)將CDIO理念融入教學(xué)活動,旨在提高學(xué)生的實踐動手能力,讓學(xué)生在實踐中更好地理解和掌握理論,同時提高學(xué)生的團隊合作能力、交流與表達(dá)能力、自信心和創(chuàng)新能力。
為此,在“數(shù)據(jù)結(jié)構(gòu)”課程中,精心設(shè)計課程中的項目,制定項目規(guī)范,每個項目包括項目大綱、項目內(nèi)容、項目組織、項目進(jìn)度控制和項目實施過程,并且注重項目前后內(nèi)容和層次的銜接和深化;同時,組織學(xué)生以分組、團隊合作的形式參與項目,每個分組選出一名組長,每個組員在項目中都有各自的任務(wù)和職責(zé),團隊制定階段性目標(biāo)及成果表;此外,改變以往以教師為主體的“滿堂灌”的教學(xué)活動,倡導(dǎo)以學(xué)生為主體的主動學(xué)的學(xué)習(xí)方式,在課程上提供學(xué)生上臺講解展示的機會,讓學(xué)生參與教學(xué)活動,激發(fā)學(xué)生主動學(xué)習(xí)的興趣和熱情。
針對“數(shù)據(jù)結(jié)構(gòu)”的課程內(nèi)容,我們設(shè)計了五個實習(xí)項目:大數(shù)階乘問題、迷宮問題、文件目錄管理與顯示、全國交通咨詢模擬、英語詞典的維護和識別。根據(jù)項目對學(xué)生進(jìn)行分組,授課教師在項目開展的過程中對學(xué)生進(jìn)行適當(dāng)引導(dǎo),讓學(xué)生發(fā)揮自己的主動學(xué)習(xí)能力。項目完成后,團隊內(nèi)各小組成員進(jìn)行項目匯報,既包括在課堂上展示項目成果、用PPT形式演講,也包括對項目文檔進(jìn)行整理、規(guī)范、總結(jié)并提交。項目匯報既是團隊的成果展示與答辯,也可以促進(jìn)各團隊之間的互相交流與學(xué)習(xí)。通過項目匯報,也鍛煉了學(xué)生在公共場合表達(dá)自己觀點的信心、勇氣和演講水平。
“數(shù)據(jù)結(jié)構(gòu)”分為理論教學(xué)和實踐教學(xué),實踐教學(xué)包括兩個部分:課程內(nèi)的上機實習(xí)和數(shù)據(jù)結(jié)構(gòu)課程設(shè)計。課程內(nèi)的上機實習(xí)是課程設(shè)計階段的基礎(chǔ),課程設(shè)計是課程內(nèi)的上機實習(xí)的深化和延伸。
在課程內(nèi)的上機實習(xí)部分,針對教學(xué)內(nèi)容,設(shè)計實習(xí)題目。例如,講授完線性表的內(nèi)容后,相關(guān)的實習(xí)題目有一元稀疏多項式的計算、長整數(shù)運算等。在數(shù)據(jù)結(jié)構(gòu)課程設(shè)計部分,實習(xí)題目相對于課程內(nèi)的上機實習(xí)而言,所涵蓋知識點更綜合,難度更大,相對于教學(xué)內(nèi)容有所拓展。
例如,課程設(shè)計中,計算命題演算公式的真值,需要綜合運用線性結(jié)構(gòu)的堆棧和非線性結(jié)構(gòu)的二叉樹的相關(guān)知識來解決;學(xué)生完成了基于Trie樹的英文詞典檢索后,將問題拓展至基于PATRICIA Trie樹的英文詞典檢索。在實習(xí)題目的選擇上,不僅注重現(xiàn)實生活中的實際應(yīng)用場景的結(jié)合,如電話客戶服務(wù)模擬、洗車仿真等;也注重引入一些最新的科研熱點問題,如社交網(wǎng)絡(luò)的圖實現(xiàn)等,激發(fā)學(xué)生解決問題的興趣。
改變以往“數(shù)據(jù)結(jié)構(gòu)”課程偏重于期末閉卷考試的考核方式,實施多元化的考核方式,不再僅僅為書本知識打分??己说闹行挠芍攸c考核學(xué)生掌握知識的多少,轉(zhuǎn)變?yōu)榭己藢W(xué)生運用所掌握的知識解決實際問題的能力。為了更全面地衡量學(xué)生的態(tài)度、知識、學(xué)習(xí)能力等因素,以及衡量CDIO理念在課程中運用的效果,對課程考核方式改革,對考核內(nèi)容和形式作適當(dāng)調(diào)整,形成多樣化的考評方法。
具體的課程考核改革措施有:從偏重期末考試的筆試考核改變到偏重進(jìn)行階段考核,增加多次小考核;以項目團隊為單位考核,對項目的實施情況、成果展示和答辯進(jìn)行評估;減少期末理論考試在總成績中的比重等。其中,項目評分由選題、算法設(shè)計、程序運行、團隊協(xié)作、項目匯報、項目文檔等方面綜合確定。
無論什么建設(shè),歸根結(jié)底在于人的建設(shè),因此,一門課程建設(shè)的好壞關(guān)鍵在于課程組的建設(shè)。我院“數(shù)據(jù)結(jié)構(gòu)”課程組申請該課程立項為校級精品課程,并且已經(jīng)建設(shè)完成。課程組定期組織課程組的成員進(jìn)行教學(xué)研討,借鑒國外著名大學(xué)如MIT、UC Berkeley等“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)方式,結(jié)合我校計算機專業(yè)的實際情況,針對“數(shù)據(jù)結(jié)構(gòu)”課程的前修后續(xù)課程情況等討論CDIO理念以及課程改革。除了在課題組內(nèi)互相交流討論外,課題組成員也抓住機會走出校門,參加計算機教學(xué)研討會,與其他學(xué)校的同行交流,并且將各種交流討論的收獲在教學(xué)中大膽實踐。
為了衡量CDIO理念在“數(shù)據(jù)結(jié)構(gòu)”課程中的實踐效果,我們設(shè)計了教學(xué)改革的調(diào)查問卷。針對CDIO大綱,調(diào)查問卷的內(nèi)容主要包括六個方面:(1)專業(yè)基礎(chǔ)知識及相關(guān)學(xué)科知識的掌握情況,衡量學(xué)習(xí)效果;(2)工程推理和解決問題的能力,衡量主動學(xué)習(xí)的能力和態(tài)度;(3)參與項目分組能力的提升,衡量團隊協(xié)作能力;(4)系統(tǒng)的構(gòu)思和工程化,調(diào)查“做中學(xué)”的效果;(5)教師教學(xué)的考核;(6)反饋建議。
根據(jù)學(xué)生反饋的調(diào)查問卷,統(tǒng)計結(jié)果表明,90.3%的學(xué)生認(rèn)為掌握了“數(shù)據(jù)結(jié)構(gòu)”課程的基本知識和理論,通過參與項目分組有助于提高團隊的協(xié)作能力;93.5%的學(xué)生認(rèn)為通過項目分組和上機實習(xí)后,動手實踐編程能力得到了提高;96.8%的學(xué)生認(rèn)為,查閱資料和學(xué)習(xí)的能力得到了提高,從項目組內(nèi)成員以及其他組的項目匯報中學(xué)習(xí)都有收獲;90.3%的學(xué)生認(rèn)為“數(shù)據(jù)結(jié)構(gòu)”課程的考核方式比較合理。在課程評估中,學(xué)生對教師的“數(shù)據(jù)結(jié)構(gòu)”課程評分為96.16。針對CDIO教學(xué)法,學(xué)生也對今后的教學(xué)提出了一些很好的建議。
值得一提的是,項目五的題目是英語詞典的維護和識別,該項目所涉及的課程教學(xué)的相關(guān)內(nèi)容是查找和排序,團隊學(xué)生通過自主學(xué)習(xí)、查閱資料,選擇采用課程中未講授的Trie樹結(jié)構(gòu),并完成了項目的可視化開發(fā),功能完善,項目組成員表示收獲很大。
此外,基于CDIO理念在“數(shù)據(jù)結(jié)構(gòu)”課程中的改革為學(xué)生帶來了能力的提升,也為他們今后的專業(yè)學(xué)習(xí)和發(fā)展打下了較好的基礎(chǔ)。學(xué)生積極參加科研立項和國際國內(nèi)大賽,如ACM程序設(shè)計大賽、全國計算機仿真大賽等,獲得較好的成績。
CDIO理念是一種先進(jìn)可行的工程教育模式,基于CDIO理念在“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)中進(jìn)行了改革和嘗試,實踐證明CDIO模式在教學(xué)中的有效性。今后我們將在課程教學(xué)中繼續(xù)更加深入地探索。
[1]Joint Task Force on Computing Curricula,Association for Computing Machinery (ACM)and IEEE Computer Society.Computer Science 2013:Curriculum Guidelines for Undergraduate Programs in Computer Science[M].New York:ACM Press,2013:55-61.
[2]李曉明,陳平,張銘等.關(guān)于計算機人才需求的調(diào)研報告[J].計算機教育,2004(8):11-18.
[3]王碩旺,洪成文.CDIO:美國麻省理工學(xué)院工程教育的經(jīng)典模式——基于對CDIO課程大綱的解讀[J].理工高教研究,2009,28(4):116-119.
[4]顧學(xué)雍.聯(lián)結(jié)理論與實踐的CDIO——清華大學(xué)創(chuàng)新性工程教育的探索[J].高等工程教育研究,2009(1):11-23.
[5]顧佩華,沈民奮,李升平等.從CDIO到EIP-CDIO——汕頭大學(xué)工程教育與人才培養(yǎng)模式探索[J].高等工程教育研究,2008(1):12-20.
[6]查建中.論“做中學(xué)”戰(zhàn)略下的CDIO模式[J].高等工程教育研究,2008(3):1-6.
[7]姜大志,孫浩軍.基于CDIO的主動式項目驅(qū)動學(xué)習(xí)方法研究——以Java類課程教學(xué)改革為例[J].高等工程教育研究,2012(4):159-164.