汪友生
(北京工業(yè)大學(xué) 信息學(xué)部信息與通信工程學(xué)院,北京 100124)
電類非計(jì)算機(jī)專業(yè)的本科畢業(yè)生多從事電子信息技術(shù)、通信工程、自動(dòng)化、電子科學(xué)與技術(shù)、電氣控制等工程應(yīng)用型工作,這些工作對(duì)計(jì)算機(jī)能力要求較高。C語言憑借功能豐富,靈活方便,可移植性好的特點(diǎn)[1],成為高校電類非計(jì)算機(jī)專業(yè)本科生的專業(yè)基礎(chǔ)課程,通過 C 語言程序設(shè)計(jì)課程使學(xué)生掌握程序設(shè)計(jì)的基本方法并逐步形成正確的程序設(shè)計(jì)思想。但在教學(xué)計(jì)劃中,一般來說安排的課時(shí)比計(jì)算機(jī)專業(yè)的少,在實(shí)際教學(xué)中產(chǎn)生一些教與學(xué)的問題[2,3]。
學(xué)生重視度不夠。C語言程序設(shè)計(jì)是計(jì)算機(jī)公共基礎(chǔ)課程,電類非計(jì)算機(jī)專業(yè)的不少學(xué)生認(rèn)為,此課程與他們所學(xué)的專業(yè)無關(guān),重視程度低,學(xué)習(xí)積極性不高。
課程知識(shí)點(diǎn)多而零散。在教學(xué)中,教師經(jīng)常是按教材順序逐章講解。這樣常常導(dǎo)致學(xué)生過于關(guān)注細(xì)節(jié)而忽略了程序設(shè)計(jì)的本質(zhì)[4]。同時(shí)由于每年的教學(xué)計(jì)劃都差不多,按照單一的形式進(jìn)行,教師講授,學(xué)生按要求按步驟完成,加上課時(shí)的不足常常達(dá)不到培養(yǎng)學(xué)生能力的目標(biāo)。
缺乏深入思考。大多數(shù)學(xué)生能夠掌握課堂的知識(shí),通常只是按照教材的程序知識(shí)驗(yàn)證例題的正確性,做不到對(duì)問題深入的思考,舉一反三。因?yàn)檎n時(shí)所限,實(shí)踐訓(xùn)練也不充分。一種普遍的情況是雖然學(xué)過C語言程序設(shè)計(jì)課,但等到高年級(jí)其它專業(yè)課或課程設(shè)計(jì)或畢業(yè)設(shè)計(jì)要用時(shí)又感覺無所適從,不知從何下手。
在教育改革的浪潮下,教育理念改變了從前“一言堂”“一刀切”的課堂形式,使學(xué)生成為課堂的主角,教師起著輔導(dǎo)和監(jiān)督的作用。這樣的學(xué)習(xí)模式,有利于學(xué)習(xí)者依據(jù)自己的學(xué)習(xí)興趣和學(xué)習(xí)習(xí)慣把握進(jìn)度,做到了因材施教[5,6]。
對(duì)于教學(xué)中存在的問題,結(jié)合電類專業(yè)的教學(xué)計(jì)劃,提出一些改進(jìn)的方法。
針對(duì)電類專業(yè)的特點(diǎn),授課時(shí)應(yīng)重點(diǎn)、難點(diǎn)突出,避免知識(shí)細(xì)節(jié)講述的面面俱到,否則學(xué)生容易陷入一些語法細(xì)節(jié)忽略程序設(shè)計(jì)的本質(zhì)。教師在講完每節(jié)課程知識(shí)后,積極帶著學(xué)生跳出細(xì)節(jié),從高視角回顧每章的知識(shí)聯(lián)系,提煉程序語言的本質(zhì)。教師可以先舉一個(gè)簡(jiǎn)單具體的案例,例如輸出一個(gè)“Hello,C語言!”。在此基礎(chǔ)上逐漸加入輸入輸出,數(shù)據(jù)類型,函數(shù),文件等語法知識(shí)[7]。也許學(xué)生對(duì)于例子中部分知識(shí)細(xì)節(jié)不是很明白。但他們切實(shí)的看到了一個(gè)完整的程序及其實(shí)現(xiàn)的功能,從整體上對(duì)C語言有了一個(gè)感性的認(rèn)識(shí)后帶著疑問去學(xué)后面的知識(shí)。有了疑問,學(xué)習(xí)效率才會(huì)提高。教師選擇案例時(shí),盡量選擇趣味性高,綜合性強(qiáng)的例子,有助于提高學(xué)生的學(xué)習(xí)興趣。
電類專業(yè)學(xué)生畢業(yè)往往從事電子信息,通信工程等方面工作,這些工作對(duì)于思維邏輯性要求較高。而C語言程序設(shè)計(jì)中的思維主要體現(xiàn)在抽象和自動(dòng)化兩方面[2,8]。抽象表現(xiàn)為使用函數(shù)、常量、變量、數(shù)組和鏈表等元素表達(dá)實(shí)際問題中的系統(tǒng)、功能特征等。自動(dòng)化表現(xiàn)為通過設(shè)計(jì)函數(shù)功能,實(shí)現(xiàn)函數(shù)的自動(dòng)跳轉(zhuǎn)和調(diào)用,最終實(shí)現(xiàn)系統(tǒng)的功能。所以實(shí)際教學(xué)中,應(yīng)該結(jié)合C語言的抽象和自動(dòng)化的特點(diǎn),有針對(duì)性的講解課程知識(shí)。例如,一個(gè)函數(shù)中的順序語句可以自動(dòng)執(zhí)行的基礎(chǔ)是EIP寄存器的加法操作。多個(gè)函數(shù)之間的來回自動(dòng)跳轉(zhuǎn)的基礎(chǔ)是內(nèi)存堆棧區(qū)的支持等。
C語言基本是在大一年級(jí)的時(shí)候開設(shè),學(xué)生程序設(shè)計(jì)的基礎(chǔ)較低,C語言語法對(duì)于學(xué)生來講較難接受,若是從中體會(huì)語言的抽象與自動(dòng)化就會(huì)更難。因此,對(duì)于學(xué)習(xí)初期,教師有必要提出一些引導(dǎo)式的問題,帶領(lǐng)學(xué)生逐漸認(rèn)識(shí)編程的奧秘。比如,可以提出這樣的一系列問題:如何綜合描述一個(gè)人的姓名、年齡和籍貫,如何描述一個(gè)班中的某科成績(jī),等等類似問題。通過拋出這些問題,使學(xué)生體會(huì)計(jì)算機(jī)與人之間的交流,感受C語言強(qiáng)大的功能,思考如何將實(shí)際物體元素抽象為C語言符號(hào)。
依據(jù)C語言的抽象和自動(dòng)化的思想進(jìn)行教學(xué),使得C語言的各種符號(hào)不再虛幻,與真實(shí)元素緊密相連,學(xué)生的思維能力得到鍛煉。
即使學(xué)過C語言程序設(shè)計(jì)課程,在面對(duì)實(shí)際問題的時(shí)候,學(xué)生往往依然不知道如何下手,沒有程序設(shè)計(jì)思路。另外,學(xué)生對(duì)編成興趣不一,熟練程度不同,基礎(chǔ)也不一樣。針對(duì)這一現(xiàn)象,提出一個(gè)“練—仿—?jiǎng)?chuàng)” 的實(shí)踐教學(xué)模式[9-11]。所謂“聽過的會(huì)忘記,看過的會(huì)記得,做過的才能理解”,理解了才能更好地應(yīng)用,才能有更多的創(chuàng)新。
練主要是檢驗(yàn)教材或老師給的程序的結(jié)果。這個(gè)過程看似簡(jiǎn)單,學(xué)生在運(yùn)行過程也會(huì)出許多錯(cuò)誤。比如符號(hào)沒輸對(duì)、保留字錯(cuò)寫、0誤輸為o、分號(hào)省略、變量沒定義或重復(fù)定義等。這個(gè)過程使學(xué)生掌握了如何快速找到程序中出現(xiàn)的語法錯(cuò)誤、連接錯(cuò)誤和功能錯(cuò)誤,幫助今后的學(xué)習(xí)。
仿是指經(jīng)過反復(fù)練習(xí)后驗(yàn)證性的編寫程序。有了一定的基礎(chǔ)知識(shí)后,鼓勵(lì)學(xué)生根據(jù)要求對(duì)程序進(jìn)行適當(dāng)修改,觀察輸出結(jié)果有什么變化,并將修改后的程序與原來的程序進(jìn)行比較,尤其是比較輸出結(jié)果,然后分析修改部分對(duì)運(yùn)行結(jié)果的影響。
創(chuàng)是學(xué)生已經(jīng)掌握了較強(qiáng)的C編程能力后嘗試解決實(shí)際問題[12]。將實(shí)際問題抽象,提取特征,完成設(shè)計(jì)。如可以設(shè)計(jì)成績(jī)統(tǒng)計(jì)系統(tǒng),貪吃蛇游戲等程序。這個(gè)過程的目的是培養(yǎng)學(xué)生運(yùn)用已學(xué)知識(shí)解決實(shí)際問題的能力。教師可以將往屆的資料提供給學(xué)生,讓學(xué)生提前鍛煉自己,挑戰(zhàn)自己,讓他們提前進(jìn)入?yún)①悹顟B(tài),了解參賽難度,以及自己的潛力,享受解決問題帶來的成就感。
鼓勵(lì)學(xué)生多參加C語言編程競(jìng)賽。競(jìng)賽是對(duì)學(xué)生設(shè)計(jì)能力、實(shí)踐能力、心理素質(zhì)、團(tuán)隊(duì)精神以及體力的一個(gè)極大挑戰(zhàn)。在檢驗(yàn)學(xué)生綜合運(yùn)用知識(shí)的同時(shí),更側(cè)重于鍛煉學(xué)生的實(shí)際動(dòng)手操作能力,使學(xué)生真正利用C語言完成程序設(shè)計(jì),解決實(shí)際問題。這個(gè)過程不但使學(xué)生的課程知識(shí)得到加強(qiáng),團(tuán)隊(duì)合作能力,心理素質(zhì)得到提高,動(dòng)手操作能力得到鍛煉,是對(duì)學(xué)生綜合能力的全面考核。學(xué)校可以開展各類計(jì)算機(jī)競(jìng)賽,甚至可以將競(jìng)賽納入學(xué)分,這樣可以促使學(xué)生積極參加競(jìng)賽,調(diào)動(dòng)學(xué)生的學(xué)習(xí)熱情,使學(xué)生勇于思考,勇于創(chuàng)新。
課后作業(yè)是對(duì)課堂知識(shí)鞏固和理解的必要手段。根據(jù)電類專業(yè)的特點(diǎn),建議采取獨(dú)自作業(yè)和合作完成相結(jié)合的方式。獨(dú)自作業(yè)主要是對(duì)課堂上所學(xué)的知識(shí)細(xì)節(jié)加強(qiáng)練習(xí),加深記憶;合作作業(yè)是團(tuán)隊(duì)合作完成各自抽取的題目。在團(tuán)隊(duì)合作的過程中,大家各抒己見,探討問題,交流知識(shí),在合作的過程中,學(xué)生的設(shè)計(jì)思維得到鍛煉,模糊的知識(shí)點(diǎn)得到互補(bǔ),學(xué)習(xí)效率會(huì)有很大提高。
作為電類專業(yè)的一門基礎(chǔ)課程,C 語言程序設(shè)計(jì)的教學(xué)不僅培養(yǎng)了學(xué)生分析問題、解決問題、編寫程序的能力,而且使學(xué)生懂得程序設(shè)計(jì)的方法。電類專業(yè)本科生可以充分利用C語言程序設(shè)計(jì)基礎(chǔ)進(jìn)行后續(xù)圖像處理,信號(hào)處理等課程的學(xué)習(xí),為畢業(yè)設(shè)計(jì)和未來的工作都打下了很好的基礎(chǔ),將來可以更好的與程序開發(fā)人員溝通與合作,開發(fā)與本領(lǐng)域有關(guān)的計(jì)算機(jī)應(yīng)用程序。
結(jié)合具體教學(xué)改革,從2012年和2015年兩次修訂本科生教學(xué)大綱以來的幾年教學(xué)實(shí)踐表明,適當(dāng)減少理論課細(xì)節(jié)講授,加大實(shí)踐環(huán)節(jié)力度,完善考核方式,團(tuán)隊(duì)合作完成作業(yè)等這些改進(jìn)方法符合當(dāng)下的實(shí)際情況,實(shí)施起來相對(duì)新型教育方法更具有可操作性,收到了良好的效果。同時(shí)這些方法以培養(yǎng)學(xué)生的學(xué)習(xí)積極性,加強(qiáng)實(shí)際編程能力,提高程序設(shè)計(jì)的思維方式,提高創(chuàng)新與合作能力為宗旨,真正做到以學(xué)生為主,以學(xué)為主。
[1] 劉芳, 秦興國(guó), 王宇英. 《C語言程序設(shè)計(jì)》教學(xué)存在的問題及改進(jìn)[J]. 教育理論與實(shí)踐, 2012(36): 51-52.
[2] 汪紅兵, 姚琳, 武航星, 張敏. C語言程序設(shè)計(jì)課程中的計(jì)算思維探析[J]. 中國(guó)大學(xué)教學(xué), 2014(9): 59-62.
[3] 徐新愛. 基于學(xué)科競(jìng)賽的《C語言程序設(shè)計(jì)》課程教學(xué)改革研究[J]. 西南師范大學(xué)學(xué)報(bào)(自然科學(xué)版), 2015(9):224-228.
[4] 李曉東, 魏惠茹, 董振華. 項(xiàng)目驅(qū)動(dòng)教學(xué)法在計(jì)算機(jī)程序設(shè)計(jì)語言課中的探索[J]. 軟件, 2015, 36(4): 107-109.
[5] 葉向前. 電大非計(jì)算機(jī)專業(yè)計(jì)算機(jī)教學(xué)現(xiàn)狀及對(duì)策[J]. 軟件, 2014, 35(2): 178.
[6] 施鍵蘭, 黃文秀. 程序設(shè)計(jì)類課程中的教改研究[J]. 軟件,2016, 37(3): 34-35.
[7] 施鍵蘭, 黃文秀, 楊立娟. C 語言程序設(shè)計(jì)教學(xué)探討[J].軟件, 2013, 34(1): 171-172.
[8] 孫曉妍. C 程序設(shè)計(jì)中循環(huán)結(jié)構(gòu)的教學(xué)設(shè)計(jì)與探討[J]. 軟件, 2014, 35(3): 219-221.
[9] 李建伏, 沈中林, 衡紅軍. 案例教學(xué)法在面向?qū)ο蟪绦蛟O(shè)計(jì)課程中的應(yīng)用[J]. 軟件, 2015, 36(3): 48-51.
[10] 王蕾. 計(jì)算機(jī)上機(jī)實(shí)踐課程改革探索[J]. 軟件, 2014, 35(2):172-173.
[11] 彭星堂, 謝華成. 高等院校理工科計(jì)算機(jī)公共課教學(xué)改革研究[J]. 軟件, 2014, 35(2): 169-171.
[12] 孫立民, 梁國(guó)業(yè). 信息與計(jì)算科學(xué)專業(yè)實(shí)施大工程教育的理論與實(shí)踐探索[J]. 軟件, 2013, 34(5): 153-154.