馮瑩瑩
(阜陽師范學院 信息工程學院,安徽 阜陽 236041)
基于EPT-CDIO的課程教學改革研究
——以C語言程序設計為例
馮瑩瑩
(阜陽師范學院 信息工程學院,安徽 阜陽 236041)
C語言程序設計是一門既重理論知識,又重實踐能力的入門編程課程,在教學過程中如何培養(yǎng)學生的主動學習、解決實際問題的能力及團隊協(xié)作能力至關重要.根據應用型創(chuàng)新人才培養(yǎng)的目標,將Engineering quality(工程素養(yǎng))、Professionalism(職業(yè)素養(yǎng))和Team accomplishment(團隊素養(yǎng))與CDIO理念有機融合,據此實現基于EPT-CDIO的全新的教學模式,從重置課程體系,靈活運用教學方法,加強實踐教學及改革考核方式等方面進行了創(chuàng)新,教學效果得到了全面提升.
C語言;應用型創(chuàng)新人才;EPT-CDIO
隨著計算機技術的飛速發(fā)展,人們的生活發(fā)生了翻天覆地的變化.作為21世紀的大學生,應緊跟時代步伐,調整自己的知識儲備,做一個理論知識扎實、專業(yè)實踐能力強的復合型人才.這就要求在教學過程中應遵循以下理念:面向應用需要;采用多種模式;啟發(fā)自主學習;重視實踐訓練;加強創(chuàng)新意識;樹立團隊精神,培養(yǎng)工程素養(yǎng).
C語言是各專業(yè)所開設的第一門編程語言,是學好其他高級編程語言(如C++,VisualBasic,Java等)的基礎.由于學生在此之前基本上未接觸系統(tǒng)的編程知識的培訓,再加上C語言牽涉的概念繁多抽象,語法紛繁復雜,形式靈活多樣,程序設計的思路和方法難以掌握,不少首次接觸該知識的學生感到難以入手.教師在傳授過程中,課堂理論知識講解很詳細,語法分析透徹,上機實踐安排過于簡單,基本上都是一些驗證性實驗,不注重培養(yǎng)學生的實際編程能力和項目解決能力,只是一味的照本宣科.另外,在上機實踐的過程中,學生并沒有系統(tǒng)的形成“編寫程序-編譯程序-調試程序-運行程序”的良好習慣,在每一環(huán)節(jié)出現問題后不能獨立的改正錯誤.
為了改變上述狀況,切實提高學生能夠利用程序解決實際問題的能力,并結合筆者多年的教學經驗及應用型人才培養(yǎng)的目標,在教學改革中引入了EPT-CDIO理念.EPT是Engineering quality(工程素養(yǎng))、Professionalism(職業(yè)素養(yǎng))和Team accomplishment(團隊素養(yǎng))的縮寫,將EPT融入到CDIO教育理念,目的就是在解決項目的過程(構思-設計-實現)中培養(yǎng)學生的工程素養(yǎng)、職業(yè)素養(yǎng)和團隊素養(yǎng).C程序設計作為理論與實踐并重的課程,采用EPT-CDIO的教學模式從課程體系重置,教學方法,實踐教學及考試方面進行了改革.
2.1 構建基于EPT-CDIO的課程體系
C語言程序設計課程是計算機專業(yè)開設的第一門重要的先導專業(yè)基礎課,后續(xù)課程比如C++、數據庫、數據結構、操作系統(tǒng)都跟C語言有著直接或間接的聯(lián)系.學生在學習編程過程中的一個良好開端,必須從整個培養(yǎng)體系中優(yōu)化、完善課程的內容體系.
課程組依據EPT-CDIO思想重構了本課程的課程體系.該課程體系的設置結構合理,體現了以素質、知識、能力為培養(yǎng)目標,以項目實踐為主線,能夠滿足本專業(yè)企業(yè)需求,如圖1所示:
圖1 C語言程序課程體系設置
在圖1中,將C語言的知識點劃分為4個模塊,分別為基礎知識模塊、邏輯編程模塊、高級應用模塊以及面向對象程序設計模塊.每個模塊并不是孤立存在的,是層層遞進的.基礎知識模塊要求學生掌握C程序的運行步驟、C的數據類型、表達式等并能編寫簡單的應用程序;邏輯編程模塊要求學生掌握程序的三種基本結構和數組的應用,并能夠利用冒泡法解決學生成績排名問題;高級應用模塊,主要涉及到函數、指針、結構體的教學,本部分是教學的重點也是難點,要求學生能夠利用函數調用、指針等方法解決學生成績排名問題并能夠利用結構體學會制作學生成績單;面向對象程序設計模塊,是C語言的延伸階段,為學習面向對象程序設計打下基礎,在此階段要求學生繼續(xù)完善學生管理系統(tǒng)的設計.該課程體系的設置將實踐教學項目貫穿始終,既有簡單的基礎技能實驗,又有綜合性強的企業(yè)項目實踐,必要的時候需學生分組合作完成,體現了EPT-CDIO的教育理念,符合學生的認知規(guī)律,提高了學生學習該課程的興趣.
2.2 教學方法改革
課題組在C語言程序設計課程的教學過程中對傳統(tǒng)的“老師為主,學生為輔”的灌輸式傳授方法進行了革新,靈活運用各種教學方法,取得了較好的效果.
2.2.1 基于問題的啟發(fā)式教學
這是在基礎知識模塊與邏輯編程模塊階段采用的教學方法.該階段不能夠按照傳統(tǒng)的教學方式按部就班的對大量的語法做細致的講解,此階段重點培養(yǎng)學生學習該課程的興趣.如何培養(yǎng)學生的興趣呢?教師在講課的過程中,可以提出問題,學生通過討論、思考等方式找到問題的答案.實踐證明,帶著問題的啟發(fā)式教學方法調動了學生學習的積極性和主動性.
比如,在講解下面的實例時,
(1)首先會讓學生自己分析結果,絕大多數同學由于不知道變量的類型會決定變量的取值范圍,想當然的認為該程序運行結果是32767,32768.
(2)為了驗證學生的分析結果,運行此程序,結果顯示32767,-32768.顯然運行結果與學生的分析結果不一致,留給學生一定的討論時間.
(3)解析該程序,由于基本整型變量的取值范圍是-32768—32767,a的值加1之后超出了整型變量的取值范圍,所以結果不可能是32768.根據補碼知識得到-32768.問題解決,教師的教學目的也達到了.
2.2.2 程序設計方法為主的教學模式
在講解本課程的過程中,重點培養(yǎng)學生的邏輯思維能力和將實際問題轉換為程序設計的能力,這與學生的認知和學習規(guī)律是一致的.
下面通過一個C語言教學實例闡述教學方法的實施.
用C語言編程實現求1×2×3×4×5
步驟一:分析問題 可以先求1×2,再用得到的結果乘以3,以此類推,求5!共需要4步.但是如果把題目換成求1000!,按照上述方法需要999步,所以此方法不可??!
通過觀察可以看出,參與運算的對象之間是有規(guī)律的,后一個數要比前一個數大1,我們可以假定變量t為被乘數,變量i為乘數,用循環(huán)算法求結果.
步驟二:畫傳統(tǒng)流程圖 如圖2所示:
從圖2可以看出,先對變量t,i分別賦初值1,2,然后把t*i的結果重新賦值給t,變量i自動加1,加1之后判斷i的值是否大于5,如果不大于5,繼續(xù)進行t*i的結果重新賦值給t,直到i大于5成立,算法就結束了.
圖2 傳統(tǒng)流程圖
步驟三:改進流程圖,如圖3所示:
圖3 改進算法流程圖
傳統(tǒng)的流程圖由于對流程線的使用沒有嚴格限制,在解決一些復雜問題的時候顯得力不從心此流程圖要比傳統(tǒng)流程圖簡潔,閱讀方便.
步驟四:C語言編程實現
步驟五:問題延伸 假如要求10!,只需要把判斷條件(i<=5)改為(i<=10);假如要求1*3*5*7*9,只需要將變量t,i分別賦初值為1,3,將循環(huán)條件(i<=5)改為(i<=9),遞增表達式i=i+1改為i=i+2即可.
從上述實例的教學方法可以看出,學生不僅解決了一道題目,而且通過發(fā)散思維,掌握了解決同類問題的解題思路.
2.2.3 教學過程中引入競賽機制
為了培養(yǎng)學生學習該課程的興致,提高學生的動手實踐能力,在教學過程中我們選拔了部分同學參加全國“藍橋杯”軟件設計大賽與“飛思卡爾”智能汽車大賽,并取得了優(yōu)異成績,激發(fā)了學生的學習熱情.同時在組織、培訓學生的過程中,教師的實戰(zhàn)能力有了進一步的提升.這種以賽促學、以賽促教的教學方法使學生和教師受益匪淺.
2.2.4 項目引領、任務驅動
在實踐教學的過程中,以項目開發(fā)作為主線.按照企業(yè)項目的開發(fā)規(guī)范要求每個學生完成自己項目組中所分配的任務,最終合作完成一個項目,比如,在開發(fā)“學生信息管理系統(tǒng)”時,首先要明確該信息系統(tǒng)包括成績信息管理模塊、課程信息管理模塊、班級信息管理模塊、學籍信息管理模塊以及系統(tǒng)管理模塊.各模塊之間存在什么樣的聯(lián)系,如何實現該系統(tǒng)的數據庫設計,模塊設計、程序實現等等.在此階段培養(yǎng)學生的動手實踐能力與團隊協(xié)作能力.
2.3 實踐教學改革
為了配合理論教學,使教學效果達到最優(yōu),按照EPT-CDIO的思想,我們對實踐教學進行了改革.實踐教學主要培養(yǎng)學生的動手實踐能力和綜合運用所學知識解決實際問題的能力及團隊協(xié)作能力,為此,我們把實踐教學分為“兩個宗旨三個部分”:兩個宗旨旨在提高學生的程序設計能力和系統(tǒng)工程項目實踐能力;三個部分指的是實踐教學的安排包括(1)基礎和驗證型實驗,(2)設計和開發(fā)型實驗,(3)研究與創(chuàng)新型實驗.
在提高程序設計能力方面,由于C語言程序設計兼具“專業(yè)”與“基礎”兩個特點,故C語言本身的語法知識與程序結構必須要掌握,除此之外,通過該門課程的學習能夠掌握一定的算法并解決一些實際問題比如數值計算和非數值計算等,為后續(xù)課程打好基礎基于上述因素,實踐教學的安排要體現學生編程能力的培養(yǎng).我們可以將編程能力進一步分為基礎能力和可擴展能力,“基礎能力”是學生在該門課程中必須掌握的能力,“可擴展能力”是通過實踐活動進一步提高的能力.
在系統(tǒng)工程實踐能力方面的培養(yǎng),要以實訓項目的開發(fā)作為主線.實訓項目的設計應切合實際、由簡入深、不斷拓展,學生在實踐的過程中逐步培養(yǎng)起基礎的工程項目開發(fā)能力.對于特別感興趣又有著強烈求知欲的同學,可以對實訓項目繼續(xù)延伸或者把企業(yè)項目引入實踐活動中,進一步提高他們的開發(fā)能力.
所涉及到的三個部分包括(1)基礎和驗證型實驗,主要涉及本課程的基礎知識,實驗目的是使學生理解、驗證、鞏固并掌握課內所學的教學內容;(2)設計和開發(fā)型實驗,此類實驗有效的培養(yǎng)了學生的綜合應用所學知識與技術的能力,培養(yǎng)學生自主學習,帶著問題尋找答案的能力;(3)研究與創(chuàng)新型實驗,針對部分學習興趣高、編程能力強的學生,重點培養(yǎng)學生的科研創(chuàng)新能力.
將“兩個宗旨三個部分”引入到實踐教學活動中,教師在這個過程中僅起指導作用,項目的設計與實施以學生為主體,以市場需求為導向,分工合作完成,鍛煉了學生的科研創(chuàng)新能力、團隊協(xié)作能力,真正提高了教學質量.
3.1 以可編程智能車為實踐平臺
以可編程智能車為實踐平臺,這在現有C程序設計課程的實踐平臺方面具有獨到之處.本課程將“靜態(tài)”的編程語言與“運動”的智能小車結合,讓C程序的運行效果不再是“黑底白字”或簡單的圖形設計,讓學生在有趣、實用的嵌入式軟件項目開發(fā)過程中學習C語言,將學生的注意力從枯燥的程序代碼轉移到生動的程序實現效果上來,很大程序上提高了學生對程序設計的興趣和自主學習能力,使學生將C程序設計在一個新的實用化領域——智能電子產品開發(fā)中學以致用,做到“軟硬結合”,培養(yǎng)學生利用編程技術解決實際應用問題的能力和創(chuàng)新設計能力.
3.2 按企業(yè)軟件開發(fā)流程組織教學
按企業(yè)軟件開發(fā)流程組織教學,在現有C程序設計課程的教學形式上具有鮮明的特色.嵌入式軟件開發(fā)是目前和將來就業(yè)的熱點方向,是C程序設計的重要應用領域.本課程面向嵌入式軟件開發(fā)的工作過程,圍繞項目展開教學,以解決實際應用問題為目標,將學生組成項目開發(fā)團隊,撰寫項目計劃書,劃分項目開發(fā)模塊并分配開發(fā)任務,設計算法,編寫與調試程序,提交項目開發(fā)文檔,最終進行產品展示和項目驗收,讓學生體驗基于C程序設計的企業(yè)軟件項目開發(fā)的完整流程和規(guī)范,培養(yǎng)了學生的就業(yè)技能、團隊協(xié)作能力和產品開發(fā)能力.
〔1〕顧學雍.聯(lián)結理論與實踐的CDIO——清華大學創(chuàng)新性工程教育的探索[J].高等工程教育研究,2009(1):11-23.
〔2〕林海斌,葉汝軍,高樹昱.CDIO理論基礎綜述[J].商場現代化,2010(13):189.
〔3〕張興強.CDIO高等工程教育模式的研究與應用[J].中國科技信息,2008(23):55-56.
〔4〕查建中.論“做中學”戰(zhàn)略下的CDIO模式[J].高等工程教育研究,2008(3):1-6,9.
G642;TP312
A
1673-260X(2017)03-0216-04
2016-11-09
安徽省阜陽師范學院校級教研項目(2014JYXM49);阜陽師范學院教學研究項目(2014JYXM41);安徽省質量工程項目(2014zjjh079);安徽省重大教學改革項目(2016jyxm0777);安徽省自然科學研究項目(2015FXTZK02);安徽省重大教學改革項目(2015xdjy196);安徽省教學研究項目(2015jyxm728)