国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C語(yǔ)言課程的教學(xué)改革與實(shí)踐

2013-04-29 17:57:48朱清華
教書(shū)育人·高教論壇 2013年6期
關(guān)鍵詞:C語(yǔ)言語(yǔ)句學(xué)期

朱清華

程序設(shè)計(jì)課程在計(jì)算機(jī)科學(xué)(Computer Science, CS)專(zhuān)業(yè)新生的教學(xué)中起著相當(dāng)基礎(chǔ)的作用,CS專(zhuān)業(yè)包括計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程和網(wǎng)絡(luò)工程。盡管近年來(lái)涌現(xiàn)了很多新的程序設(shè)計(jì)語(yǔ)言,如java, C#, Python和Ruby等,但C和java語(yǔ)言從2002年以來(lái)一直是兩種最流行的語(yǔ)言[1]。C語(yǔ)言經(jīng)常名列軟件界知名的“TIOBE Programming Community Index”(TIOBE程序論壇指數(shù))排行榜首位。所以,我們依然選擇了C語(yǔ)言這種非腳本語(yǔ)言作為一年級(jí)新生的必修程序設(shè)計(jì)課程的語(yǔ)言。

隨著信息技術(shù)日新月異的發(fā)展,社會(huì)需求越來(lái)越多的CS專(zhuān)業(yè)畢業(yè)的學(xué)生。Internet已經(jīng)滲透到人們?nèi)粘5墓ぷ鳌W(xué)習(xí)和生活當(dāng)中,一年級(jí)CS專(zhuān)業(yè)的學(xué)生與上世紀(jì)90年代相比也發(fā)生了很大的變化。在我們學(xué)校,2001年到2003年計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)的學(xué)生入學(xué)平均成績(jī)?cè)谌资畟€(gè)專(zhuān)業(yè)位居第一;然而,10年之后的2011年,已經(jīng)降至第28名。PC機(jī)和Internet的普及和十年前相比不可同日而語(yǔ)。這些新的變化迫使任課老師必須采用新的方法以應(yīng)對(duì)入門(mén)程序語(yǔ)言課程教學(xué)的新需求變化。

本文其它部分組織如下:在第二節(jié)分析了教學(xué)過(guò)程中存在的問(wèn)題之后,將在第三節(jié)提出一些方法來(lái)解決這些新出現(xiàn)的問(wèn)題,最后第四節(jié)進(jìn)行小結(jié)。

一問(wèn)題分析

在過(guò)去幾年的教學(xué)中,我們發(fā)現(xiàn),把這門(mén)課程安排在一個(gè)學(xué)期內(nèi)完成學(xué)習(xí),很多學(xué)生感覺(jué)吃力,在后續(xù)課程學(xué)習(xí)過(guò)程中會(huì)表現(xiàn)出遇到實(shí)際問(wèn)題編程能力較弱。甚至有少數(shù)一些學(xué)生不知該如何下手寫(xiě)一個(gè)新的程序。本節(jié)我們從教和學(xué)兩個(gè)方面挖掘分析其中存在的問(wèn)題。

1對(duì)計(jì)算機(jī)科學(xué)缺乏興趣

C語(yǔ)言安排在一年級(jí),很多學(xué)生在入學(xué)前對(duì)這個(gè)專(zhuān)業(yè)認(rèn)識(shí)很膚淺??梢哉f(shuō)入學(xué)前,幾乎所有學(xué)生對(duì)今后的計(jì)算機(jī)職業(yè)生涯規(guī)劃都一無(wú)所知。換言之,只有相當(dāng)少數(shù)的學(xué)生對(duì)CS專(zhuān)業(yè)有他們自己的愛(ài)好興趣,曾經(jīng)學(xué)習(xí)過(guò)編程,他們對(duì)專(zhuān)業(yè)或程序的興趣可使得以后的學(xué)習(xí)是自我驅(qū)動(dòng)式的。然而,總有一些學(xué)生在C語(yǔ)言課程的初始階段是毫無(wú)興趣可言。據(jù)我們經(jīng)驗(yàn)來(lái)看,很大程度上,課程結(jié)束時(shí)考試成績(jī)差進(jìn)一步導(dǎo)致他們對(duì)后續(xù)專(zhuān)業(yè)課程學(xué)習(xí)缺乏信心。興趣才是最好的老師。任課老師應(yīng)該從課程一開(kāi)始就激發(fā)學(xué)生的興趣,才能在后續(xù)教學(xué)過(guò)程中使學(xué)生的潛能得以發(fā)揮。

2缺乏編程的調(diào)試能力

編程新手經(jīng)??嘤谌绾蜗駭D牙膏似的寫(xiě)程序開(kāi)始的代碼段,而且,在好不容易寫(xiě)出程序后,不知道如何找出隱藏在其中的錯(cuò)誤和漏洞,不知道如何分析程序找出錯(cuò)誤。特別是對(duì)于成績(jī)較差的學(xué)生,即使寫(xiě)很簡(jiǎn)單的程序,他們也看不出程序到底是錯(cuò)在哪里或者為什么得出不正確的結(jié)果,不知從哪里開(kāi)始排查和定位錯(cuò)誤。這樣的情況在我們每一屆每個(gè)班的教學(xué)中都會(huì)遇到。實(shí)際上,即使是熟練的程序員,調(diào)試程序的能力都是必不可少的,特別是在開(kāi)發(fā)復(fù)雜軟件程序的時(shí)候。

3優(yōu)秀生和差生之間的差距問(wèn)題

在我們計(jì)算機(jī)學(xué)院,招生人數(shù)從2001年的359人翻一番到2011年的790人。學(xué)生來(lái)源于從大城市到農(nóng)村等不同地區(qū)。在第一次課時(shí),我們都會(huì)做過(guò)簡(jiǎn)單調(diào)查,發(fā)現(xiàn)只有少數(shù)一些學(xué)生在高中學(xué)習(xí)過(guò)程序設(shè)計(jì),一般學(xué)習(xí)BASIC或PASCAL語(yǔ)言,有的學(xué)生曾經(jīng)參加過(guò)國(guó)家?jiàn)W林匹克信息學(xué)競(jìng)賽(NOI)等相關(guān)課外活動(dòng);大多數(shù)學(xué)生并沒(méi)有學(xué)習(xí)過(guò)程序設(shè)計(jì)。在一年級(jí)第二學(xué)期,將會(huì)有優(yōu)秀的學(xué)生能在ACM廣東省賽區(qū)比賽中獲得獎(jiǎng)勵(lì)。再看成績(jī)較差的學(xué)生,在第一次上機(jī)課時(shí),他們連鍵盤(pán)的布局都不知道,不知如何開(kāi)機(jī)關(guān)機(jī)和基本的操作,因?yàn)橐郧皬奈词褂眠^(guò)PC機(jī)。這樣,優(yōu)秀生和較差生的差距比十年前擴(kuò)大了。如果我們教學(xué)過(guò)程較多顧及后者,前者將不能充分利用好課堂時(shí)間發(fā)揮他們的潛力。這就會(huì)任課老師帶來(lái)新的挑戰(zhàn)。

二改革教學(xué)方法

1在課堂教學(xué)中提高學(xué)生對(duì)計(jì)算機(jī)科學(xué)的興趣

通過(guò)和本課程相關(guān)的故事,讓學(xué)生了解計(jì)算機(jī)科學(xué)技術(shù)發(fā)展史的同時(shí),激發(fā)他們對(duì)計(jì)算機(jī)技術(shù)的熱愛(ài)和對(duì)科學(xué)執(zhí)著追求及探索精神,逐漸培養(yǎng)興趣。例如,在第一課時(shí),在講C語(yǔ)言歷史時(shí)將介紹C語(yǔ)言之父丹尼斯·里奇(Dennis Ritchie)的故事,他雖然不是像比爾·蓋茨那樣為大眾所知,但他和肯·湯普遜(Ken Thompson)對(duì)C語(yǔ)言和UNIX操作系統(tǒng)做出了杰出貢獻(xiàn)。在C語(yǔ)言和這兩位著名計(jì)算機(jī)科學(xué)家互相交織的歷史故事當(dāng)中,學(xué)生將體會(huì)到什么是科學(xué)精神,什么是對(duì)計(jì)算機(jī)科學(xué)的貢獻(xiàn)和創(chuàng)新。當(dāng)然,在課程的后續(xù)教學(xué)過(guò)程中仍然會(huì)花幾分鐘加入一些相關(guān)故事活躍課堂氣氛。學(xué)生樂(lè)于在課堂中聽(tīng)到這些一般不為人知的故事,潛移默化地增加了興趣。

另外一個(gè)途徑是介紹和C語(yǔ)言關(guān)聯(lián)密切的應(yīng)用實(shí)例。雖然C語(yǔ)言被用于開(kāi)發(fā)操作系統(tǒng)和嵌入式系統(tǒng),但是,這些應(yīng)用不易于新手所理解。所以,在講到相關(guān)知識(shí)時(shí),我們選擇一些簡(jiǎn)短的應(yīng)用程序演示其運(yùn)行甚至瀏覽一下源代碼,有些有趣的應(yīng)用就作為實(shí)驗(yàn)課的任務(wù),讓學(xué)生完成編程。曾做過(guò)2個(gè)班級(jí)對(duì)同一個(gè)實(shí)驗(yàn)內(nèi)容的比較,一個(gè)班級(jí)要求編程完成的是與實(shí)際應(yīng)用需求相關(guān)的任務(wù),另外一個(gè)班級(jí)要求完成的是等價(jià)的數(shù)學(xué)問(wèn)題,實(shí)踐表明:前者能激發(fā)學(xué)生解決問(wèn)題的求知欲望,提高學(xué)習(xí)興趣,并且更多的學(xué)生進(jìn)行熱烈的討論和進(jìn)一步思考,效果較好。

2運(yùn)用可視化工具促進(jìn)學(xué)生對(duì)程序的理解

可視化工具是促進(jìn)學(xué)生直觀理解程序運(yùn)行過(guò)程一個(gè)重要的有效的方法。我們采用了吳偉民教授開(kāi)發(fā)的名為Anyview的一套軟件[2],從2009級(jí)的部分班級(jí)開(kāi)始試用,2010級(jí)所有學(xué)生使用。從2010年開(kāi)始正式建設(shè)題庫(kù),到目前為止已經(jīng)達(dá)300題(共9章教學(xué)內(nèi)容的習(xí)題)。它由web服務(wù)器端和客戶(hù)端兩部分組成。服務(wù)器端存儲(chǔ)了實(shí)驗(yàn)任務(wù)的題目數(shù)據(jù)庫(kù)和學(xué)生寫(xiě)的源程序文件,包括正確完成的程序以及未完成或有錯(cuò)誤的源程序??蛻?hù)端安裝能夠通過(guò)校園網(wǎng)或Internet連接服務(wù)器的 PC機(jī)上,學(xué)生用來(lái)編寫(xiě)程序。

使用Anyview與原來(lái)教學(xué)相比有較好效果。Anyview打破了課堂實(shí)驗(yàn)教學(xué)的時(shí)間限制,學(xué)生在宿舍或者其它地方能連接通過(guò)Internet的PC機(jī)上用它編程。Anyview有助于初學(xué)者理解、調(diào)試程序??梢詾椴煌慕虒W(xué)層次的學(xué)生設(shè)立不同作業(yè)表,使學(xué)生編寫(xiě)程序的題目不同。例如,曾經(jīng)根據(jù)重修班級(jí)學(xué)生的學(xué)習(xí)情況,專(zhuān)門(mén)設(shè)置1個(gè)題庫(kù),讓學(xué)生重點(diǎn)練習(xí)薄弱環(huán)節(jié)。布置的上機(jī)題目分必做和選做,因材施教,使不同層次學(xué)生都能得到提高。

課堂教學(xué)用Anyview演示程序的運(yùn)行。程序能在其中編輯、運(yùn)行和調(diào)試。可以使程序一步一步的運(yùn)行過(guò)程或設(shè)置斷點(diǎn),學(xué)生就能觀察運(yùn)行過(guò)程中所有變量值的變化情況。對(duì)一年級(jí)的新手來(lái)說(shuō),它操作很簡(jiǎn)單,結(jié)果直觀可見(jiàn),有助于學(xué)生理解for語(yǔ)句、while語(yǔ)句等控制流程語(yǔ)句的執(zhí)行過(guò)程。在實(shí)驗(yàn)課上,我們鼓勵(lì)學(xué)生使用多種IDE開(kāi)發(fā)工具(Integrated Development Environment)配合Anyview一起學(xué)習(xí)。

從老師的角度來(lái)說(shuō),我們能夠通過(guò)教師端程序詳細(xì)地實(shí)時(shí)地了解每個(gè)學(xué)生編寫(xiě)程序的進(jìn)度。有助于老師督促較差學(xué)生,可以通過(guò)教師端軟件看到哪些學(xué)生完成情況差,實(shí)時(shí)掌握學(xué)生學(xué)習(xí)情況;反饋到課堂教學(xué)有的放矢。并且可以知道優(yōu)秀學(xué)生學(xué)習(xí)水平如何,有哪些學(xué)生的自學(xué)能力較強(qiáng),有的學(xué)生可以在開(kāi)課2個(gè)月內(nèi)完成整個(gè)課程的題目,在2009級(jí)之前通過(guò)作業(yè)或提問(wèn)往往不能發(fā)現(xiàn)所有優(yōu)秀生。隨著題庫(kù)建設(shè)完善,我們將進(jìn)一步用Anyview進(jìn)行實(shí)驗(yàn)課限時(shí)測(cè)驗(yàn),讓不同班級(jí)的任課老師自主設(shè)置每個(gè)班級(jí)的題庫(kù)作業(yè)表。

3從一開(kāi)始就強(qiáng)調(diào)學(xué)習(xí)調(diào)試

調(diào)試是用于發(fā)現(xiàn)或減少程序中錯(cuò)誤缺陷的分析過(guò)程。在課程教學(xué)中使用了3種工具。下表對(duì)它們的優(yōu)缺點(diǎn)做了比較小結(jié)。

新手容易掌握Anyview的使用,而且他們可能對(duì)操作Windows上的軟件工具不熟悉,所以在課程開(kāi)始的前幾周,我們教學(xué)生使用Anyview。新手往往很難學(xué)會(huì)TC的環(huán)境配置,我們?cè)诮虒W(xué)實(shí)踐中發(fā)現(xiàn)較差的學(xué)生在課程接近結(jié)束時(shí)都對(duì)配置感到迷惑。VC還是受到編程相對(duì)熟練的學(xué)生的歡迎,他們可以用VC寫(xiě)一些自己感興趣的稍大的程序,甚至完成包括窗口圖形界面程序的編寫(xiě)。

在第1次實(shí)驗(yàn)課上,我們就告訴學(xué)生如何用工具查看變量的值。在后面的教學(xué)中,要求學(xué)生掌握如下調(diào)試技術(shù),告訴他們什么時(shí)候選擇其中之一來(lái)進(jìn)行調(diào)試[3]。經(jīng)驗(yàn)表明,學(xué)生越早學(xué)習(xí)使用調(diào)試技術(shù),將能更好地提高調(diào)試程序的能力。

(1)單步執(zhí)行。每步執(zhí)行一條語(yǔ)句,選擇一些變量加入觀察窗口。(2)跳越函數(shù)執(zhí)行。這將在講函數(shù)這一章時(shí)講。學(xué)生可觀察一些變量的值在執(zhí)行完函數(shù)后的變化。(3)在指定語(yǔ)句處設(shè)置斷點(diǎn)。(4)在程序中的某些語(yǔ)句后加入打印語(yǔ)句,以便在程序運(yùn)行后觀察某些變量在運(yùn)行過(guò)程的中間結(jié)果。方法3和方法4將在講完循環(huán)控制語(yǔ)句后學(xué)習(xí)。

4改為2個(gè)學(xué)期學(xué)習(xí)該課,改革課程考核方式

為了切實(shí)提高大多數(shù)學(xué)生的基本編程能力,充分發(fā)揮優(yōu)秀生的潛力[4,5],我們進(jìn)行了兩項(xiàng)改革。在2009級(jí)之前,本課程在一年級(jí)的第1或第2學(xué)期開(kāi)課,在一個(gè)學(xué)期內(nèi)完成教學(xué),理論課堂教學(xué)與實(shí)驗(yàn)課教學(xué)分別占56和16課時(shí);學(xué)生普遍感覺(jué)時(shí)間很緊,沒(méi)有足夠的時(shí)間在機(jī)器上編寫(xiě)代碼實(shí)踐。而在2010級(jí)開(kāi)始,我們改革教學(xué)安排,分成2個(gè)學(xué)期完成該課教學(xué),第1學(xué)期理論與實(shí)驗(yàn)分別占32和24課時(shí),第2學(xué)期分別占24和16課時(shí)。這樣的調(diào)整安排使學(xué)生有更多的實(shí)驗(yàn)課時(shí)間花在編寫(xiě)代碼實(shí)踐上面,以用促學(xué)。

另外,從2011級(jí)開(kāi)始我們?cè)诘?個(gè)學(xué)期根據(jù)學(xué)生在第1個(gè)學(xué)期的學(xué)習(xí)綜合評(píng)價(jià)進(jìn)一步把學(xué)生分成2個(gè)教學(xué)班組,大概25%較優(yōu)秀的學(xué)生安排在A組班級(jí),其余安排在B組班級(jí)。在第2學(xué)期A組學(xué)生要求完成1個(gè)較大的程序設(shè)計(jì)任務(wù),或稱(chēng)為課程設(shè)計(jì)任務(wù),包括編寫(xiě)代碼和編寫(xiě)相應(yīng)的文檔。對(duì)B組學(xué)生重點(diǎn)強(qiáng)調(diào)基本編程方法的教學(xué)。當(dāng)然在Anyview系統(tǒng)中我們布置給他們的編程任務(wù)也有所區(qū)別。實(shí)踐表明,由于這種因材施教,A組學(xué)生的能力提高更快能夠挑戰(zhàn)難度更大的任務(wù),而又使相對(duì)較差的B組學(xué)生獲得了更多基本的編程訓(xùn)練并為以后學(xué)習(xí)建立了更強(qiáng)的自信心。

老師能用Anyview查詢(xún)查看到每個(gè)學(xué)生寫(xiě)的每個(gè)程序并評(píng)分。當(dāng)然給程序評(píng)分并不是一件容易完成的工作[6],需要有更好的算法。下圖是2012年秋季的一個(gè)班級(jí)共46人的Anyview綜合評(píng)定成績(jī)排名與期末考試筆試成績(jī)排名的差值,其中x軸表示學(xué)生序號(hào)1~46,y軸表示這2個(gè)排名的差值。數(shù)據(jù)為(Anyview排名,期末考試排名):(46,46),(13,6),(6,4),(23,22),(19,23),(10,27),(13,2),(11,28),(31,32),(29,40),(41,20),(4,7),(36,37),(33,39), (32,18), (1,9), (2,11), (45,31), (8,26), (23,33), (35,38), (9,1),(13,24), (5,12), (18,35), (42,25), (20,15), (28,43), (22,16), (43,36),(20,30),(23,10),(17,3),(12,34),(27,41),(34,19),(44,42),(7,14),(29,13),(3,5),(16,8),(38,17),(26,44),(39,45),(37,21),(40,29)。這說(shuō)明,很多學(xué)生平時(shí)實(shí)際編程能力與筆試表現(xiàn)有出入,所以最后課程的成績(jī)?cè)u(píng)定中期末考試占一定的比例,還必須考慮平時(shí)實(shí)際編程能力表現(xiàn)。

總之,C語(yǔ)言是一門(mén)在本科一年級(jí)開(kāi)設(shè)的基礎(chǔ)課程。我們進(jìn)行的教學(xué)改革實(shí)踐表明培養(yǎng)學(xué)生對(duì)本專(zhuān)業(yè)課程的興趣是很重要的,本文分析了如何解決學(xué)生調(diào)試能力差的問(wèn)題,介紹了用一個(gè)可視化工具作為調(diào)試器和新生有效學(xué)習(xí)助手的經(jīng)驗(yàn)。如何對(duì)不同學(xué)生進(jìn)行個(gè)性化教學(xué)是一個(gè)挑戰(zhàn)性任務(wù),我們改革了教學(xué)學(xué)時(shí)安排和進(jìn)行了分組教學(xué),使得優(yōu)秀生和較差生都能得到盡可能大的進(jìn)步。

參考文獻(xiàn)

[1]吳偉民.試論軟件基礎(chǔ)課程程序設(shè)計(jì)環(huán)境的可視化[J].廣東工業(yè)大學(xué)學(xué)報(bào):社會(huì)科學(xué)版, 2007(B06): 156-157.

[2]Pengfei Yu, Lijun Yang, Programming Skills Training in Programming Language Courses[C].2010 International Conference on Educational and Information Technology, V3: 14-16.

[3]Andreas Zendler, Christian Spannagel, and Dieter Klaudt. Marrying Content and Process in Computer Science Education[J].IEEE Transactions on Education, 2011(8): 387-397.

[4]Raymond Lister and John Leaney, First Year Program ming: Let All the Flowers Bloom[C]. 2003 Proceedings of the fifth Australasian conference on computing education, Volume 20: 221-230.

[5]JoséLuis Fernández Alemán, Automated Assessment in a Programming Tools Course [J]. IEEE Transactions on Education, 2011,54(4):576-581.

[6]KonstantinosAntonis,ThanasisDaradoumis,SpyrosPapadakis, and Christos Simos,Evaluation of the Effectiveness of a Web-Based Learning Design for Adult Computer Science Courses[J].IEEETransactionsonEducation,2011(8):374-380.

猜你喜歡
C語(yǔ)言語(yǔ)句學(xué)期
新的學(xué)期 新的嘗試
期末沖刺高二上學(xué)期期末模擬卷
重點(diǎn):語(yǔ)句銜接
基于Visual Studio Code的C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)探索
基于C語(yǔ)言的計(jì)算機(jī)軟件編程
電子制作(2018年16期)2018-09-26 03:27:08
精彩語(yǔ)句
八年級(jí)(上學(xué)期)期末測(cè)試題(D)
高職高專(zhuān)院校C語(yǔ)言程序設(shè)計(jì)教學(xué)改革探索
論子函數(shù)在C語(yǔ)言數(shù)據(jù)格式輸出中的應(yīng)用
如何搞定語(yǔ)句銜接題
类乌齐县| 巴里| 浦城县| 三门县| 榆树市| 甘肃省| 修水县| 阿荣旗| 济阳县| 农安县| 天门市| 蓬安县| 顺义区| 宝山区| 临安市| 肥东县| 文登市| 金门县| 洮南市| 泽州县| 淮北市| 孟连| 奉节县| 信宜市| 阿勒泰市| 巩留县| 宜阳县| 玛曲县| 长垣县| 容城县| 辉县市| 阆中市| 彰武县| 岳阳县| 静宁县| 衡山县| 普兰县| 屏东县| 邢台市| 长治市| 富民县|