金豪 肖夢瓊 劉曉華
摘 要:本文主要探討今年來國際上通行的CDIO教育理念在高校程序設計基礎課程中的引入和實踐,通過分析傳統(tǒng)教學方法的利弊和針對學生工程能力的培養(yǎng)目標,探討了以項目和任務驅動為核心的一系列教改措施,使學生能通過一系列專業(yè)實踐更好地掌握和應用程序設計的一般方法學。
關鍵詞:CDIO 程序設計 工程能力 項目驅動 評價體系
一、引言
IT業(yè)一直是國家優(yōu)先發(fā)展的重點行業(yè),也是國內人才需求量最大的行業(yè)之一,而軟件開發(fā)在其中占據了相當大的比例??陀^來說,高等教育在計算機專業(yè)傳統(tǒng)的教育理論型、研究型人才培養(yǎng)上有較大的優(yōu)勢,但在應用型人才的培養(yǎng)上存在層次單一,理論與實踐脫節(jié)的情況,使得不少畢業(yè)生理論有余,而在專業(yè)應用和編程綜合能力方面存在著明顯不足。[1]
CDIO工程教育模式是由麻省理工學院和瑞典皇家工學院等大學通過多年研究、探索與教學實踐建立起的一種基于工程教育的先進教學模式[2,3],其核心理念是以“做中學”和“基于項目的學習”為基礎的教學模式。筆者在多年教學實踐和分析本校程序設計基礎課教學現狀的基礎上,結合CDIO教學理念和工程教育標準,以培養(yǎng)學生的編程綜合能力為目標,探討了一種針對程序設計基礎課的教學改革方案。
二、程序設計課程的教學現狀
程序設計綜合能力的評判并沒有統(tǒng)一的評判標準。一般認為以下幾種能力是必須的:①自頂向下分析問題的能力;②編碼實現問題求解的能力;③良好的代碼編寫習慣;④調試錯誤的能力;⑤閱讀、理解和優(yōu)化別人代碼的能力。
這些能力的培養(yǎng)需要經過大量的編程和項目開發(fā)實踐,是一個需要長期投入時間和精力的過程。目前一般高校的培養(yǎng)計劃中對于低年級本科生編程能力的培養(yǎng)主要是通過開設一兩門C語言相關課程。這些課程的開設對于引導學生進入程序設計這種領域和培養(yǎng)基本的編程技能是必要的,但傳統(tǒng)的“課堂+實驗”教學中也存在不少問題:[2]
1.C語言本身的特點是比較靈活,相關知識點比較多。部分學生只是機械地學習語法,對很多知識點的掌握采取死記硬背的方法,缺乏對程序設計基本思想方法的理解和掌握。
2.一些教師的理論教學采用填鴨式教學方法,依次講解教材中的知識點,實驗課上讓學生按照實驗教材進行實踐。導致的一個典型問題是學生聽課時往往覺得枯燥。
3.學生忽視對于一些重要的基礎性算法的理解和掌握,而這些算法是編寫更復雜程序的一個基礎,也是學習《數據結構》、《算法分析》等后續(xù)課程的基礎。
4.做習題的方式對于加深局部知識點的理解和掌握是必要的,但對于程序設計整體思維和綜合能力的培養(yǎng)是不夠的。不少同學僅僅滿足于掌握作業(yè)中的習題,忽視自己在編程實踐方面的訓練,導致的一個嚴重問題是筆試往往能通過甚至得高分,但實際編程能力很弱,尤其是對于應用型問題的處理,反映出對于程序設計一般方法學尚未掌握。這樣培養(yǎng)出的學生往往會考試不會編程。
綜合上述情況,可以知道傳統(tǒng)的課堂教學對于學生程序設計綜合能力的培養(yǎng)是有所欠缺的。這其中最主要的原因是學生在“分析問題→構思→設計→編碼實現”這整個環(huán)節(jié)上的訓練不夠。
三、基于CDIO理念的教學改革
針對現有教學方式對學生編程綜合能力的培養(yǎng)效果不明顯的情況,我們結合CDIO工程教育模式 “做中學”和“基于項目的學習”兩個核心理念,施行了一系列教改措施。其目的是進一步增強學生編程綜合能力的培養(yǎng),而不僅僅滿足于語法和知識點的講授。具體課程的培養(yǎng)能力指標結合CDIO工程模式和理念對已有的教學大綱進行了修改,圍繞學生工程能力的培養(yǎng),給出了各項能力培養(yǎng)指標。
1.項目驅動的教學方式
在課程的設計中強調以項目為導向的方式。在課堂教學方面,主要圍繞程序設計方法學講授最基本的知識點,淡化一些應用場合不多又較為細枝末節(jié)的知識點;在實驗教學方面,以一個個具體的小型項目為依托來強化從問題分析到編碼實現這個過程中的程序思維培養(yǎng),并在其中融入相關的重要知識點。在整個教學過程中,學生通過項目開發(fā)將各項瑣碎的知識點串聯起來來深化理解和應用。
2.多維度評價體系
在課程成績評定上,采用多維度考核的方式:
(1)傳統(tǒng)的筆試成績僅占據40%。這部分主要考核學生對于基本語法和各項重要的局部知識點的掌握情況。
(2)實驗方面采用項目考核的方式,占40%。在課程結束之際,由教師給出一系列難度適中的小型項目由學生選題進行設計開發(fā),最終以小組答辯的形式來進行考核。教師會綜合以下幾方面來進行評判給分:①設計構思的可行性;②代碼風格和友好性;③運行結果的正確性;④代碼健壯性;⑤算法的效率。
(3)平時成績占20%,主要由兩部分組成:①平時的作業(yè)情況;②學生對案例項目的分析講解,教師以分組形式組織學生討論并發(fā)言。
3.教學效果的延續(xù)性
以往的教學計劃編排,課程與課程之間獨立性較強,導致很多同學學完程序設計課程后就再不接觸編程相關的內容。這帶來的問題是課堂教學效果再好,課程后續(xù)的加強、鞏固和深入仍然遠遠不夠,使得四年期間的整體培養(yǎng)效果大打折扣。
因此,將相關性較強的多門講授和實踐類課程組成相互關聯的課程群,從整體上考慮課程的后繼學習,以保證教學效果有較好的延續(xù)性。例如,本專業(yè)學生在《程序設計基礎》課程之后設置有“基礎軟件綜合設計”和“網絡應用軟件綜合設計”兩個課程設計。這兩個課程設計圍繞C語言程序設計的教學,在項目內容的深度和廣度上加以一定的擴展,要求學生自己查閱相關文獻資料和教師講解所需專業(yè)知識的基礎上,自己從零開始進行整個項目的規(guī)劃、構思、設計和實現,從而對所學內容進行鞏固加強,并進一步激發(fā)課余編程的興趣。
參考文獻
[1]顧佩華,沈民奮,陸小華,譯. 重新認識工程教育—國際 CDIO 培養(yǎng)模式與方法[M].北京:高等教育出版社,2009.
[2]顧佩華,沈民奮,李升平等.從CDIO到EIP-CDIO汕頭大學工程教育與人才培養(yǎng)模式探索[J]. 高等工程教育研究,2008( 1) : 12-20.