鐵菊紅 彭輝 李蕊 王嘉韻
摘? ?要:文章針對目前C語言教學(xué)中的弊端,提出了在CDIO教學(xué)理念下的“C語言程序設(shè)計”課程理論教學(xué)方法和實踐教學(xué)方法改革,旨在培養(yǎng)學(xué)生良好的編程思維、工程能力、團隊協(xié)作和交流能力,介紹了支撐教學(xué)方法改革的C語言在線代碼演示和代碼仿寫系統(tǒng)。
關(guān)鍵詞:C語言;CDIO;教學(xué)改革;代碼仿寫
“C語言程序設(shè)計”課程是計算機類專業(yè)學(xué)生接觸的第一門計算機編程語言課,對培養(yǎng)學(xué)生編程思維具有關(guān)鍵性的作用。計算機專業(yè)類學(xué)生不僅要有良好的編程思維,還要具備出色的工程能力,以符合我國在“卓越工程師教育培養(yǎng)計劃”提出的培養(yǎng)目標(biāo):培養(yǎng)造就一大批創(chuàng)新能力強、適應(yīng)經(jīng)濟社會發(fā)展需要的高質(zhì)量各類型工程技術(shù)人才[1] 。構(gòu)思、設(shè)計、實現(xiàn)、運作(Conceive-Design-Implement-Operate,CDIO)工程教育模式[2]是近年來國際工程教育改革的最新成果,讓學(xué)生以主動的、實踐的、課程之間有機聯(lián)系的方式學(xué)習(xí)工程。在“C語言程序設(shè)計”課程中引入CDIO工程教學(xué)模式,對理論和實踐教學(xué)進行改革,培養(yǎng)學(xué)生編程思維的同時,讓學(xué)生獲得初步的工程能力,培養(yǎng)團隊合作和交流能力,為后續(xù)的工程實踐課程和編程語言課打下牢固基礎(chǔ)。
1? ? 目前C語言教學(xué)存在的弊端
“C語言程序設(shè)計”課程既具有很強的理論性和實踐性,牽涉的概念也比較復(fù)雜,語法規(guī)范繁多。目前絕大部分C語言類教材按基本語法知識為邏輯安排教材內(nèi)容,很多教師往往也是按教材的思維組織教學(xué)內(nèi)容,先講基本概念,再講語法格式,最后舉例說明,線性的教學(xué)模式無法激發(fā)學(xué)生對C語言的興趣,更不利于促進學(xué)生思考,很難鍛煉學(xué)生的邏輯思維和解決實際問題的能力。課堂演示的例題知識點往往是獨立應(yīng)用,例題功能之間沒有相關(guān)聯(lián)系。實踐課程中的練習(xí)題也是功能缺乏實際聯(lián)系,每個學(xué)生完成實驗指導(dǎo)書上的題目,而且題目基本是驗證性題目,這種實踐教學(xué)方法導(dǎo)致學(xué)生會做作業(yè),但是在工程中應(yīng)用該知識解決問題時,卻無法完成,不利于培養(yǎng)學(xué)生的實際解決問題能力、工程能力和團隊協(xié)助與交流能力。
2? ? CDIO理念下的理論教學(xué)方法改革
2.1? CDIO理念指導(dǎo)理論教學(xué)方案
CDIO作為一種新的工程教育理念,在教學(xué)過程中貫徹項目開發(fā)的思路,旨在重點培養(yǎng)學(xué)生熟練運用專業(yè)基礎(chǔ)知識的能力、工程分析和解決問題的能力、團隊協(xié)作和交流的能力。
CDIO模式提出了具有可操作性的能力培養(yǎng)大綱、全面實施以及檢測評測的12條標(biāo)準(zhǔn),有利于指導(dǎo)教學(xué)方法改革。
依據(jù)培養(yǎng)大綱,在該課程理論教學(xué)中完成以下兩個培養(yǎng)目標(biāo):(1)培養(yǎng)學(xué)生“C語言程序設(shè)計”基礎(chǔ)科學(xué)知識。(2)培養(yǎng)學(xué)生對產(chǎn)品“構(gòu)思—設(shè)計—實施—運行”的概念理解,具備初步工程能力以及團隊協(xié)作和交流能力。
2.2? CDIO理念下的理論教學(xué)方案實施
在理論教學(xué)中,依據(jù)CDIO工程教育理念,教師將C語言所有語法知識散射到一個完整工程項目中。項目為“圖書館管理系統(tǒng)”,學(xué)生對該項目功能和業(yè)務(wù)流程較熟悉,教師可將精力放在對項目“構(gòu)思—設(shè)計—實施—運行”的講解上。在第一次開課時,給學(xué)生講解項目的整體功能,讓學(xué)生對該項目有整體的認(rèn)識,有利于學(xué)生在后期學(xué)習(xí)中理解分解功能,否則會造成“只見樹木,不見森林”的局部意識,不利于工程概念的培養(yǎng)。
在整個教學(xué)中,依據(jù)知識點增加項目子功能的難度和任務(wù)量,不僅能應(yīng)用當(dāng)前知識點解決實際問題,還能應(yīng)用前期學(xué)過的知識,形成知識的密集性連接,從而牢固掌握C語言的基礎(chǔ)知識。
項目分解中采用了模塊化程序設(shè)計思想,那么在設(shè)計和實施過程中就要應(yīng)用函數(shù)知識點。教師教學(xué)采用函數(shù)模塊化教學(xué)方法[3],項目分解的子功能都在自定義函數(shù)中實現(xiàn),每講完一章內(nèi)容,就將子函數(shù)集成起來,形成一個小項目。指針是C語言的重點和難點知識,函數(shù)模塊化教學(xué)方法和指針過程化教學(xué)方法結(jié)合[4],可以將指針很好地應(yīng)用在工程教學(xué)中。整個C語言學(xué)習(xí)過程中,學(xué)生滾動學(xué)習(xí)C語言中的兩大難點知識:函數(shù)和指針。整個C語言學(xué)完后,學(xué)生對函數(shù)和指針概念理解透徹,并能有效地利用指針設(shè)計簡潔、緊湊和高效的程序和解決實際問題。
3? ? CDIO理念下的實踐教學(xué)方法改革
培養(yǎng)學(xué)生編碼能力和工程能力,實踐課是非常關(guān)鍵的,實踐課為學(xué)生提供系統(tǒng)構(gòu)思、設(shè)計、實施和運行環(huán)境。
(1)增量項目實踐教學(xué)。借鑒軟件開發(fā)過程模型中的增量模型開發(fā)思想[5],實踐教學(xué)中,學(xué)生每學(xué)完一章內(nèi)容,就要構(gòu)思、設(shè)計、實施和運行“小學(xué)生數(shù)學(xué)計算練習(xí)軟件”項目,該項目隨著學(xué)生知識點的增加,功能不斷完善。因為有函數(shù)模塊化教學(xué)的支撐,學(xué)生增加功能時非常方便,主要以函數(shù)為單位增加項目代碼。指導(dǎo)該項目時,教師為輔,學(xué)生為主。因為在理論課堂上學(xué)生對工程有較好的認(rèn)識,在實施過程中教師要把項目的構(gòu)思、設(shè)計和實施交給學(xué)生,不要過多講解,主要以回答學(xué)生問題為主。在每一次項目功能增量中,學(xué)生都會對該項目進行構(gòu)思、設(shè)計、實施和運行。在整個C語言知識學(xué)完后,學(xué)生會完成功能較齊全的“小學(xué)生數(shù)學(xué)計算練習(xí)軟件”,而且對工程軟件開發(fā)的全過程有了深度認(rèn)識。
(2)小組學(xué)習(xí)模式。在CDIO教育模式下更有利于培養(yǎng)學(xué)生團隊精神和交流表述能力。在實踐教學(xué)中,將班內(nèi)一個宿舍內(nèi)的同學(xué)劃分為學(xué)習(xí)小組(一般為6人),方便學(xué)生交流和討論。為了對工程有全面認(rèn)識,每個同學(xué)要單獨完成實踐課項目,學(xué)生增量開發(fā)項目時,只整合自己的程序功能模塊,會導(dǎo)致學(xué)生合作和交流僅限于對存在問題的交流,而對企業(yè)中團隊開發(fā)一個項目的合作模式體會不到,而且這種交流方式不適合社交能力較弱的同學(xué),他們?nèi)狈涣鞯姆e極性,難以主動和小組內(nèi)的同學(xué)交流。為了解決上述問題,小組組長收集每位同學(xué)開發(fā)的一個子功能并將其整合起來,形成一個小組項目包。在每次實踐課上小組每位成員講解已開發(fā)的項目功能,教師帶領(lǐng)全班同學(xué)進入討論和交流階段,引導(dǎo)學(xué)生對該項目存在的問題積極發(fā)言,不僅培養(yǎng)了學(xué)生的表述能力,還培養(yǎng)了學(xué)生實際的團隊合作和交流能力。
4? ? C語言在線代碼演示和代碼仿寫系統(tǒng)
4.1? 在線代碼演示
CDIO模式下的課堂工程教學(xué)示例,是教師根據(jù)課堂知識點從大項目分解出來的,這些例子以C文件形式存儲,數(shù)量較多(分解出的示例達(dá)70多個文件),教師難以管理。為此,開發(fā)了一個在線系統(tǒng),將C語言所有的知識點按樹形管理,再將這些例子和知識點連接起來,教師上課時按知識點可以快速找到示例代碼,并在線復(fù)制代碼一份,不破壞原示例的基礎(chǔ)上進行在線編輯、編譯和運行,課堂示例演示不僅能提高上課效率,而且減少了教師管理多個源代碼文件的平時工作量。教師對某個知識點下的示例,可以增加、刪除和修改,在線保存示例代碼,方便、快捷和安全。
4.2? 在線代碼仿寫
據(jù)以往教學(xué)經(jīng)驗得知,初學(xué)C語言者,有一定比例學(xué)生上課能聽懂語法知識,老師講解的編程例子也能聽懂,但課后自己編寫程序時卻無從下手,甚至老師課堂講過的代碼也無法重新編寫出來。CDIO模式下的課堂教學(xué)例子是教師根據(jù)課堂知識點從大項目中分解出的知識點相關(guān)的子模塊,學(xué)生對這些示例必須熟練掌握,自己才能增量開發(fā)項目。模仿編程對于初學(xué)編程者是一個較好的學(xué)習(xí)方法。學(xué)生課后模仿編程練習(xí)課堂示例的過程中,難免要參考教師上課演示的代碼。為了復(fù)現(xiàn)課堂示例,并且學(xué)生能方便管理示例文件,此在線系統(tǒng)能夠為學(xué)生提供仿寫課堂代碼功能。
學(xué)生登錄后,按知識點能快速找到課堂示例,在示例的下方就是代碼仿寫編輯框,在編輯過程中,示例代碼框可以“收起”或“展開”方便參考。運行時,在輸入數(shù)據(jù)同樣的情況下,可以對比課堂示例和自己編寫代碼的輸出結(jié)果,方便驗證代碼是否寫對。教師登錄后,可以查詢班上每位同學(xué)的代碼仿寫練習(xí),及時掌握學(xué)生學(xué)習(xí)情況。
教師通過C語言在線代碼演示和代碼仿寫系統(tǒng)能高效展開C語言課堂工程教學(xué);學(xué)生通過該系統(tǒng),在初學(xué)C語言時,通過模仿編寫課堂工程示例,牢固掌握語法知識的同時,打開編程思維,鍛煉軟件開發(fā)的工程能力,為實踐教學(xué)中的增量項目開發(fā)奠定基礎(chǔ)。
5? ? 結(jié)語
在CDIO工程教育理念的指導(dǎo)下,研究了“C語言程序設(shè)計”課程的理論教學(xué)方法和實踐教學(xué)方法改革。實踐表明,該方法能有效激發(fā)學(xué)生對C語言的編碼興趣,較好地應(yīng)用C語言知識解決實際問題,培養(yǎng)了學(xué)生一定的軟件開發(fā)工程能力、團隊合作和交流能力。C語言在線代碼演示和代碼仿寫系統(tǒng)能較好地支撐CDIO模式下的教學(xué)方法改革。
[參考文獻]
[1]陳潤,琚生根.基于CDIO理念培養(yǎng)網(wǎng)絡(luò)工程“卓越工程師”[J].實驗技術(shù)與管理,2016(11):189-192.
[2]彭輝,鐵菊紅,文立玉,等.基于CDIO的軟件工程專業(yè)工程實踐類課程的改革與實踐[J].計算機教育,2017(5):30-33.
[3]陳高云,李蕊,王嘉昀.貫穿模塊化編碼的C語言教學(xué)過程[J].計算機教育,2012(12):86-89.
[4]鐵菊紅,彭輝.C語言指針過程化教學(xué)方法研究[J].計算機教育,2017(1):102-104.
[5]張海潘,牟永敏.軟件工程導(dǎo)論[M].6版.北京:清華大學(xué)出版社,2013.