李興娟 劉明銘 師文軒
摘 要:針對高校夏季學期教學普遍存在的問題,結合高級語言編程教學實踐,提出了符合夏季學期時長的實訓課教學改革方案。在實踐中以CDIO教育理念為指導,以基于項目的學習為技術手段,重點培養(yǎng)學生工程思維和編程能力,設計多層次多類型的實訓題目,鼓勵學生以團隊的方式積極參與,并利用代碼評估工具進行質量評估。實踐證明,新模式下的實訓課提高了教學效果。
關鍵詞:實訓課程;CDIO;PBL;教學改革
DOI:10. 11907/rjdk. 192170 開放科學(資源服務)標識碼(OSID):
中圖分類號:G434文獻標識碼:A 文章編號:1672-7800(2020)002-0176-04
英標:The Reform of Teaching of High-level Programming Language Training Course Based on CDIO
英作:LI Xing-juan1, LIU Ming-ming2
英單:(1.College of Computer Science,Nankai University; 2. College of Software,Nankai University, Tianjin 300350,China)
Abstract:In view of the widespread problems of summer semester teaching in colleges and universities, combined with the practice of high-level language programming, this paper proposes the teaching reform of training course in line with the summer semester. In practice, under the guidance of the concept of CIDO education, project-based learning is used as the technical means. The emphasis is developing students engineering thinking and programming skills, designing multi-level and multi-type practical topics, encouraging students to participate in teams, and using code evaluation tools for quality assessment. Practice has proved that the new model of training courses improves the teaching effect and realizes the aim of summer semester.
Key Words: training course; CDIO; PBL; teaching reform
0 引言
我國高校一直在人才培養(yǎng)模式、課程體系、教學內容等方面進行改革,以跟上世界高等教育的發(fā)展步伐,其中一個重要改革就是“小學期”制度。“小學期”也稱為“夏季學期”,主要安排在緊隨春季學期的3-4周中,是很多世界名校普遍采用的學期制度。南開大學從2012-2013學年開始實施“夏季學期”制度。增加夏季學期后,原來的兩學期制改為“兩長一短”三學期制,即18周秋季學期+18周春季學期+4周夏季學期[1]。學期改革的目的是推動“大班上課、小班討論”,通過“講一練二考三”的教學改革,進一步提升教育教學水平和人才培養(yǎng)質量。經過幾年的實施,夏季學期在教學設置、豐富課程形式、深化實踐教學、加強國際交流方面發(fā)揮了獨特作用[1]。在實施過程中也暴露出一些問題,主要集中在“課程分散效率低”、“夏季學期課程安排不緊湊”及“修學分”方面,同時與企業(yè)實習時間沖突是普遍問題。熊丙奇[2]認為:“形式上的教學創(chuàng)新有,但實質性的教學突破依舊缺乏?!?/p>
針對高級編程語言課程(C++)而言,該課程是計算機相關專業(yè)的必修課,共開設兩個學期,每個學期都配有上機課時,最終考核形式是閉卷考試和上機編程。從課時來看,實踐教學所占比重并不小,但課程結束后,根據評教調查發(fā)現(xiàn),在上機實驗教學中,學生只是按照教師布置的作業(yè)內容或者知識點按部就班練習,欠缺分析、解決實際問題訓練。學生普遍反映“能夠看懂書,聽懂課,考試分數也好,但在編寫規(guī)模稍大的C++程序時無從下手”[3]。同時,在培養(yǎng)優(yōu)秀工程人才的過程中,高校工程教育也存在一些問題,如模式趨同化、教學中缺乏實踐環(huán)節(jié)、教學體系不適應工程特點、創(chuàng)新與創(chuàng)業(yè)教育重視不足、學生綜合能力素質薄弱等[4]?;谏鲜霈F(xiàn)狀,筆者學校開設了“高級語言編程實訓課”作為培養(yǎng)學生工程實踐能力的途徑,基于CDIO理念和PBL模式[5]對課程進行教學改革與實踐。
1 CDIO理念與PBL模式
CDIO工程教育模式是麻省理工學院和瑞典皇家工學院提出的教育理念,代表構思(Conceive)、設計(Design)、實現(xiàn)(Implement)和運作(Operate),以現(xiàn)代工業(yè)產品的生命全過程指導工程教學過程。CDIO是近年來普遍采用的工程教育理念,許多世界著名大學都采用了CDIO教育理念,國內一些大學和教師也開展了CDIO研究、實驗和探索。如南開大學王慶人[6]探討了如何借鑒歐美的CDIO模式,走適合中國國情的計算機教育之路;韓智等[7]探討了如何在軟件工程教學中采用CDIO理念進行教學改革;孫凌宇等[8]研究了CDIO標準和工程教育理念在培養(yǎng)創(chuàng)新型軟件工程人才中的作用;廖湘林等[9]在計算機專業(yè)實驗教學中采用了CDIO;馬麗等[10]采用CDIO理念構建了軟件工程在線開放課程。
基于項目的學習(PBL)是一種以學生為導向、由教師推動的學習方法。教師提出一個項目,學生在教師的指導下通過研究完成該項目,將整個研究和項目階段實施的流程系統(tǒng)化??灼絒11]、邊亞琳[12]、李杰[13]、王哲[14]和毛勝利[15]等分別在課程教學和人才培養(yǎng)方面應用了PBL模式。實踐表明PBL模式能激發(fā)學生獨立思考、主動探究、規(guī)劃學習,提升解決現(xiàn)實世界中問題的能力。PBL不僅是學習的補充活動,而且是科學類課程的基礎。
CDIO大綱涵蓋了工程教育基礎知識掌握、個人專業(yè)技能和素質發(fā)展、團隊協(xié)作能力和產品或系統(tǒng)開發(fā)必須經過的4個階段,如表1所示。筆者學校參考CDIO的工程教學理念和教學大綱,在實訓中強調對學生能力的培養(yǎng),從層面能力和具體能力進行工程思維訓練。學生要在完成特定項目的過程中學習一系列編程技能,在設計、實施和操作階段貫穿CDIO構思。在PBL教學模式實施中,減少教師講授時間,大幅增加學生動手編程時間。學生在項目參與過程中,自由組織團隊、自主分工,選擇要解決的問題,形成自己的邏輯思維和解決方案。在項目中利用自己的經驗、能力,形成自己的學習風格。項目結束時,演示成果并接受評估。 實踐證明,基于CDIO理念、采用PBL模式的實訓課程取得了很好的教學效果。
2 教學改革與實踐
本實訓課的核心目標是提高學生利用C++語言編程解決實際問題的能力,將項目開發(fā)中的經驗和先進工具教授給學生,培養(yǎng)工程素養(yǎng)和團隊合作能力,以求更接近“實訓項目”。從軟件工程師角度出發(fā),結合CDIO培訓大綱,實訓課要求學生掌握的知識點和技能涵蓋如下內容:
(1)專業(yè)基礎知識與應用能力。需要掌握C++基礎,包括數據類型和運算、運算符重載、IO流和文件操作、異常處理;掌握C++進階,包括函數模板和類模板、繼承、多態(tài)、STL標準模板庫、常用設計模式;掌握常用數據結構,包括數組、隊列、鏈表、棧、容器、集合等。
(2)個人專業(yè)能力和職業(yè)素質。需要掌握Visual Studio集成開發(fā)環(huán)境,包括多種類型項目的建立、編譯、調試和運行;熟練使用調試工具和技巧;掌握QT5集成開發(fā)環(huán)境,包括GUI項目的建立,消息和事件機制。
(3)團隊協(xié)作與溝通能力。需要組成團隊、選擇項目、自由分工、計劃開發(fā)進度并以文檔形式管理開發(fā)流程。
(4)工程系統(tǒng)能力。學生需要在項目完成后,提交可執(zhí)行系統(tǒng)并答辯演示,教師進行效果評估,同時要求使用工具軟件評估C++代碼質量。
2.1 題目設計
梳理和調整實訓課教學內容,不再沿習傳統(tǒng)的知識點練習模式,而是以完整題目為單位進行編程實踐。在設計實訓題目時,要認真考慮題目的難度級別。如果級別太高,部分學習能力較差的學生會產生畏難情緒,喪失編程興趣;如果級別太低,會形同“水課”,無法真正提升學生實踐能力。為此設計了不同難度級別的編程題目,總體分為3大類5個難度級別:基礎類、綜合類和提高類,如表2所示,其中星號表示難度級別,從1級到5級,星號越多,難度越高。
在設計實訓題目時,考慮目前流行的VisualStudio 2015(VS)和QT 集成開發(fā)環(huán)境。VisualStudio 2015功能強大,支持多種開發(fā)模式和開發(fā)語言,是業(yè)界進行C++應用程序開發(fā)的主流IDE。QT是跨平臺的C++圖形用戶界面(GUI)應用程序框架,支持開源,完全面向對象,廣泛應用于GUI程序開發(fā)。
在基礎訓練類別中,要求學生在VS環(huán)境下編寫基于Console窗口的命令行程序,完成C++基礎編程能力訓練。代表性的題目包括字典程序、圖片處理和各種編碼算法,這3種類型題目涵蓋了C++中的基本數據類型和運算、文件操作、輸入輸出、函數以及異常處理等。在綜合訓練類別中,要求學生編寫GUI程序,掌握消息事件機制和面向對象編程概念。Visual Studio提供了MFC類庫,方便開發(fā)人員自定義應用程序框架,但MFC的封裝過程復雜,學生很難掌握這些類庫,并且無法在調試中精確定位問題位置。
因此,采用Visual Studio QT插件創(chuàng)建GUI Application項目,利用VS的編譯、調試和運行環(huán)境,同時不限制學生單獨使用QT5完成這部分實訓題目。在提高訓練類別中,要求學生編寫應用級別程序,掌握復雜的數據結構和算法,考慮用戶友好性。這部分題目是經典的迷宮類、棋類和射擊類游戲,學生在完成基本功能之外可以自行增加一些特色,如背景音樂、動畫渲染、游戲關卡等元素。為培養(yǎng)學生的工程思維,提高編程效率,允許使用第三方類庫。在教學實踐中,這3類題目可以靈活調整和擴充,提升學生解決實際問題的能力。例如CMD模式下的某編碼算法,曾要求學生實現(xiàn)廣泛使用的base64編碼,在編碼和解碼算法都正確的基礎上,鼓勵學生嘗試對多種類型的文件進行編碼解碼處理。這種從點到面的擴展讓學生能看到更多的實訓成果,增強了編程信心,極大提升了學生的編程能力。以此類推,上述3大類9小類的題目可以根據實訓課進度和學生學習能力擴展到20多個具體題目。
2.2 實訓實施
高級編程語言實訓課課時為32學時,每周8課時。為保證教學效果,實訓課采用小班教學模式,每個班人數控制在30人以內,課時分配如下:
(1)在編程基礎環(huán)節(jié),以教師實操演示為主、學生練習為輔,共分配4課時。內容為配置VS和QT5開發(fā)環(huán)境,掌握調試工具和技巧,能夠定位并改正程序中的錯誤。
(2)在編程實訓環(huán)節(jié),以學生編程實踐為主、教師講解為輔,對普遍出現(xiàn)的典型問題作出指導,共分配24課時。具體分配為:基礎題目分配4課時,綜合題目分配10課時,提高題目分配10課時。基礎題目由每個學生獨立完成,教師逐一檢查,之后評分。綜合題目和提高題目以小組形式完成,學生自由組成開發(fā)團隊,每組2-3人。要求成員分工明確,確保工作量,遵循軟件開發(fā)工程規(guī)范。
(3)在評估驗收環(huán)節(jié),各個項目小組以答辯形式展示項目構思、設計、實現(xiàn)和運行各環(huán)節(jié),闡述核心技術和代碼。教師根據各小組演示效果,采用通用軟件質量框架模型對軟件項目的上層質量特征進行評估。質量特征主要包括功能特征、可靠特征、易用特征和效率特征。同時采用代碼分析工具CppDepend對所有項目代碼進行定量化的度量因子評估。CppDepend能夠對C++程序進行60多個指標測量,如class、namespace的數量、注釋比例、內聚性、穩(wěn)定度等。該工具還能直觀顯示程序模塊、類、函數之間的依賴性,給出程序質量等級。
2.3 實訓效果
在新實訓方案實施過程中,學生選課積極性得到了極大提升,每個小班的選課人數都是滿員。遵循CDIO能力培養(yǎng)大綱,教學主體由教師轉變?yōu)閷W生,學生能夠有更多的時間和更大的自由度進行工程能力訓練。以項目為導向的編程訓練培養(yǎng)了學生工程推理和解決實際問題能力,貫穿構思、設計、實現(xiàn)和運行各個階段。同時分組模式鍛煉了學生的團隊協(xié)作與交流溝通能力,讓學生更貼近企業(yè)開發(fā)環(huán)境。對學生完成的綜合題目和提高題目進行運行演示和代碼審查,發(fā)現(xiàn)開發(fā)質量有明顯提升。項目運行情況如圖1所示。
實踐結束后也發(fā)現(xiàn)了一些問題,如有些項目小組存在前松后緊情況,學生缺乏主動學習、克服困難的心理準備,缺少軟件技術、工程開發(fā)以及文檔寫作方面的經驗,工作不是很細致,抓不住重點;部分組內分工及工作量不平衡,好的學生做得多一些,基礎不好的學生做得少一些,影響項目最終質量。原因是部分教師在指導項目小組時側重宏觀指導,未深入到各個小組內部,動態(tài)了解他們的具體問題和進度。筆者計劃采用某些過程管理軟件解決上述問題,希望在后續(xù)課程中能有所改善。
3 結語
本文分析了南開大學夏季學期學制施行的特殊性和存在的問題,針對高級語言編程實訓課教學實踐,提出基于CIDO和PBL的教學模式。這種開放式的編程實踐給予學生更多的編程時間,鍛煉了學生的綜合素質,改變了夏季學期“修學分”的選課狀態(tài)。針對存在的不足,考慮加強實訓過程控制的節(jié)奏和力度。拓展學生工程思維、培養(yǎng)創(chuàng)新型人才教育任重道遠。
參考文獻:
[1] 舒高磊. 三學期制下學生夏季學期生活狀況探究——以南開大學為例[J]. 思想政治課研究,2015(5):61-65.
[2] 成炘儒,李攀,史一棋.? 高校小學期點贊與吐槽并存 小學期該如何升級[EB/OL]. http://edu.people.com.cn/n1/2017/0727/c1006-29430 793.html
[3] 張波. C++程序設計案例遴選[J]. 計算機教育,2010 (18):49-50.
[4] 朱高峰. 中國工程教育的現(xiàn)狀和展望[J]. 清華大學教育研究,2015(1):13-20.
[5] EDSTR?M K,KOLMOS A.PBL and CDIO: complementary models for engineering education development[J]. European Journal of Engineering Education,2012,39(5): 539-555.
[6] 王慶人. 我國計算機教育如何借鑒歐美 CDIO模式[J]. 計算機教育,2010(11):8-12.
[7] 韓智,張振虹,李興娟. 基于CDIO理念的軟件工程課程教學改革[J]. 計算機教育,2010(11):56-57.
[8] 孫凌宇,冷明. 基于CDIO的創(chuàng)新型軟件工程人才培養(yǎng)模式研究[J]. 山西財經大學學報,2011(S1):48-52.
[9] 廖湘琳,余曉晗,張所娟,等. 基于CDIO理念的計算機專業(yè)實驗教學改革[J]. 計算機教育,2018(2):47-52.
[10] 馬麗,李真,何偉娜,等. 基于CDIO理念的軟件工程在線開放課程建設探索[J]. 軟件導刊(教育技術),2018(10):14-17.
[11] 孔平,張建青,候麗英,等. 基于PBL教育理念的數學建模課程的教與學[J]. 上海理工大學學報(社會科學版),2018(3):267-271.
[12] 邊亞琳. 基于項目驅動的大學生創(chuàng)新能力培養(yǎng)模式探析[J]. 大學教育,2018(9):20-23.
[13] 李杰,李爽,舒廣文. 基于PBL模式的統(tǒng)計學課程教學設計——以“中心極限定理”為例[J]. 高教學刊, 2018 (5):106-108.
[14] 王哲,張鈺,袁同山. 基于PBL教學法的高校計算機課程教學改革與研究[J]. 信息與電腦,2017 (8):245-246.
[15] 毛勝利,馮運仿,程細才,等. 基于PBL的數據結構教學模式研究與探討[J]. 現(xiàn)代計算機(專業(yè)版),2015 (17):10-13.
(責任編輯:杜能鋼)