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