李曄 盧冰 王捷 金保華
C語言程序設(shè)計(jì)作為計(jì)算機(jī)專業(yè)相關(guān)專業(yè)學(xué)生的入門第一課,是學(xué)習(xí)其它專業(yè)課程的重要基礎(chǔ)。如何教好這入門第一課是教學(xué)改革中的重要課題。本文針對(duì)C語言教學(xué)中普遍存在的重理論輕實(shí)踐、重語法講解輕編程思想的現(xiàn)象,將ACM競(jìng)賽平臺(tái)用于C語言的實(shí)踐教學(xué)中,為學(xué)生提供了編程實(shí)踐的平臺(tái),極大地激發(fā)了學(xué)生的編程熱情,培養(yǎng)了學(xué)生自主學(xué)習(xí)的能力,取得了很好的教學(xué)效果。
C語言程序設(shè)計(jì) ACM競(jìng)賽平臺(tái) 教學(xué)效果
一、引言
在信息技術(shù)飛速發(fā)展的今天,如何改革傳統(tǒng)的教育教學(xué)理念與方法,將理論與實(shí)踐有機(jī)結(jié)合,有效推進(jìn)素質(zhì)教育和高水平人才培養(yǎng),是新時(shí)期IT人才培養(yǎng)面臨的新課題。程序設(shè)計(jì)能力是計(jì)算機(jī)專業(yè)學(xué)生的基本技能之一,也是檢驗(yàn)畢業(yè)生是否合格的重要標(biāo)準(zhǔn)。
ACM/ICPC國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽作為一項(xiàng)世界性的競(jìng)賽活動(dòng),正好迎合了當(dāng)今社會(huì)對(duì)創(chuàng)新性IT人才的需求,競(jìng)賽較全面地考驗(yàn)學(xué)生對(duì)知識(shí)的綜合運(yùn)用能力、創(chuàng)造性地分析解決問題的能力,所以在IT界具有超凡的影響力。該項(xiàng)賽事極大地提高了參賽同學(xué)的學(xué)習(xí)熱情、實(shí)踐動(dòng)手能力、團(tuán)隊(duì)合作能力和創(chuàng)造創(chuàng)新能力。
本人自2009年開始致力于C語言教學(xué)改革,將ACM/ICPC競(jìng)賽平臺(tái)用于程序設(shè)計(jì)課程的實(shí)踐教學(xué)中,極大地提高了學(xué)生的編程積極性,提高了學(xué)生的實(shí)踐能力、自學(xué)能力和分析解決問題的能力,為后繼專業(yè)課程的學(xué)習(xí)打下來良好的基礎(chǔ)。
二、C語言程序設(shè)計(jì)課程的特點(diǎn)
1.C語言程序設(shè)計(jì)是計(jì)算機(jī)相關(guān)專業(yè)的入門第一課
程序設(shè)計(jì)能力是計(jì)算機(jī)專業(yè)學(xué)生的基本技能之一,從課程學(xué)習(xí)的角度看,它是很多課程的基礎(chǔ),沒有較強(qiáng)的程序設(shè)計(jì)能力將導(dǎo)致許多后續(xù)課程難以學(xué)好。從計(jì)算機(jī)專業(yè)課程體系來看,國(guó)內(nèi)外大多數(shù)高校都把C語言程序設(shè)計(jì)作為計(jì)算機(jī)專業(yè)學(xué)生的第一門專業(yè)基礎(chǔ)課,重在培養(yǎng)學(xué)生理解計(jì)算機(jī)解題過程,培養(yǎng)學(xué)生用計(jì)算機(jī)解題的思維方式,破除學(xué)生對(duì)計(jì)算機(jī)的神秘感,激發(fā)學(xué)生的學(xué)習(xí)興趣,為后繼專業(yè)課程打下良好基礎(chǔ),幫學(xué)生打開計(jì)算機(jī)世界的大門。所以,如何教好這入門第一課對(duì)學(xué)生今后其它專業(yè)課程的學(xué)習(xí)至關(guān)重要。
2.C語言是一門實(shí)踐性很強(qiáng)的課程
C語言程序設(shè)計(jì)的重點(diǎn)是“程序設(shè)計(jì)”,C語言的教學(xué)不能只停留在對(duì)語法的研究上,而是教學(xué)生用C語言的語法表達(dá)自己的算法思想。目前很多C語言教材過于詳盡的語法解釋是對(duì)老師和學(xué)生的一大誤導(dǎo)。老師在課堂上用大量篇幅強(qiáng)調(diào)語法,再加上大部分高校C語言考試采用筆試,引導(dǎo)著學(xué)生的學(xué)習(xí)方式也是以語法為中心,導(dǎo)致會(huì)做選擇題、填空題、讀程序題,但就是不會(huì)自己寫程序。
三、ACM競(jìng)賽平臺(tái)在C語言實(shí)踐教學(xué)中的作用
C語言的教學(xué)重在編程能力的培養(yǎng)。如何培養(yǎng)編程能力,清華大學(xué)吳文虎教授經(jīng)常對(duì)學(xué)生說:“你不是看會(huì)的也不是聽會(huì)的,而是動(dòng)手動(dòng)腦練會(huì)的”。要想教好C語言這門課,用一句話可以概括為:千方百計(jì)提高學(xué)生對(duì)編程的興趣。ACM競(jìng)賽平臺(tái)正是起到了激發(fā)學(xué)生編程熱情的作用。
1.為學(xué)生搭建了一個(gè)學(xué)習(xí)交流的平臺(tái)
傳統(tǒng)的實(shí)驗(yàn)教學(xué)模式下,很多學(xué)生只是照著詳細(xì)的實(shí)驗(yàn)指導(dǎo)書或課本,輸入一些代碼,進(jìn)行一些驗(yàn)證性實(shí)驗(yàn),起不到對(duì)學(xué)生創(chuàng)新能力的培養(yǎng)。即使學(xué)生獨(dú)立完成了編程任務(wù),傳統(tǒng)模式下缺少嚴(yán)格的評(píng)判,只是學(xué)生自己運(yùn)行評(píng)判自己的程序,而這樣的測(cè)試是遠(yuǎn)遠(yuǎn)不夠的,一種輸入正確,不等于所有的輸入都正確;一次運(yùn)行正確,不等于次次運(yùn)行都正確。因此傳統(tǒng)模式下實(shí)驗(yàn)效果根本就無法保證。
而借助競(jìng)賽平臺(tái)后情況就完全不同了。學(xué)生需要提交源程序,由機(jī)器使用大量的測(cè)試數(shù)據(jù)評(píng)判學(xué)生的程序是否正確,然后返回相應(yīng)的信息:成功通過、語法錯(cuò)誤、答案錯(cuò)誤、超時(shí)或內(nèi)存溢出等等。學(xué)生可以根據(jù)系統(tǒng)返回的信息繼續(xù)修改程序,然后再提交,直到評(píng)判成功為止。編程中遇到問題了,苦思敏想、單步調(diào)試找出bug了、或者求助老師、學(xué)長(zhǎng)解決了,就真正掌握了一個(gè)重要知識(shí)點(diǎn)、或積累了一個(gè)重要編程經(jīng)驗(yàn),程序員就是這樣成長(zhǎng)的。
通過這一平臺(tái),教師可以隨時(shí)了解每個(gè)學(xué)生的完成情況,分析學(xué)生的代碼,及時(shí)解決學(xué)生的問題。學(xué)生每做出一道題,系統(tǒng)都有記錄和排名,同時(shí)學(xué)生也能查看其他同學(xué)做了多少題、做了那些題,無形中在他們間形成一種互相競(jìng)爭(zhēng)的狀態(tài),激起繼續(xù)努力的勁頭,形成良好的學(xué)習(xí)氛圍。
2.培養(yǎng)了學(xué)生自主學(xué)習(xí)能力
C語言程序設(shè)計(jì)是一個(gè)實(shí)踐性很強(qiáng)的學(xué)科,僅靠理論課和實(shí)驗(yàn)課上有限的時(shí)間是遠(yuǎn)遠(yuǎn)不夠的,學(xué)生需要在課下進(jìn)行大量的編程練習(xí),在編程、調(diào)試的過程中才能深入掌握理解C語言的語法,并培養(yǎng)程序設(shè)計(jì)思想。而ACM競(jìng)賽平臺(tái)正好提供了這樣一個(gè)程序在線測(cè)試平臺(tái)。為了能夠在下次實(shí)驗(yàn)或競(jìng)賽中取得良好的成績(jī),他們會(huì)充分的利用課余時(shí)間,在競(jìng)賽平臺(tái)下大量的做題,雖然有些知識(shí)的學(xué)習(xí)很枯燥,但是由于在攻克題目中行之有效,又是學(xué)以致用,他們常常會(huì)樂此不疲,直到把每一個(gè)知識(shí)點(diǎn)都理解透徹,這在無形中正好彌補(bǔ)了我們教學(xué)中的不足,對(duì)我們的教學(xué)工作起到了良好的促進(jìn)作用。
3.引導(dǎo)著C語言教學(xué)理念的改變
C語言被國(guó)內(nèi)大部分高校列為計(jì)算機(jī)相關(guān)專業(yè)的入門第一課。但國(guó)內(nèi)高校C語言的教學(xué)效果普遍不理想,成了打擊計(jì)算機(jī)專業(yè)學(xué)生成長(zhǎng)的絆腳石。早期的C語言程序設(shè)計(jì)教材大都以講解語法為中心,鉆語法的牛角尖。教學(xué)生寫程序,好比教小學(xué)生寫作文,只講語法是教不會(huì)寫作的。而ACM競(jìng)賽平臺(tái)的引入,把以語法為中心的教學(xué)模式引導(dǎo)到案例驅(qū)動(dòng)的教學(xué)模式中來。C語言的學(xué)習(xí),不再以語法為中心,而是以培養(yǎng)編程能力為中心。C語言的教學(xué)重點(diǎn)得到了撥亂反正,教學(xué)效果得到了顯著提高。
四、結(jié)語
新的教學(xué)模式對(duì)專業(yè)教師提出了更高的要求。第一,要求教師要熱愛編程,能帶學(xué)生領(lǐng)略編程之美,激發(fā)學(xué)生的編程熱情;第二,要求教師要有很強(qiáng)的責(zé)任感,及時(shí)解決學(xué)生編程中遇到的問題,保護(hù)學(xué)生的編程積極性。本人自09年開始嘗試借助ACM競(jìng)賽平臺(tái)進(jìn)行C語言教學(xué)改革,教學(xué)效果提高顯著。進(jìn)行教學(xué)改革的兩個(gè)班級(jí)中的學(xué)生進(jìn)入高年級(jí)以后,有的在ACM-ICPC國(guó)家大學(xué)生程序設(shè)計(jì)競(jìng)賽中獲得大獎(jiǎng),有的成了學(xué)生科研團(tuán)隊(duì)的主力軍,畢業(yè)生的就業(yè)質(zhì)量也有明顯提高。這一教學(xué)改革成果于2012年開始在全院推廣,使得2012級(jí)新生整體編程能力有很大提高。這一教學(xué)改革成果的推廣必將極大地提高學(xué)生的實(shí)踐動(dòng)手能力、自主學(xué)習(xí)能力和創(chuàng)新能力,為社會(huì)輸送更多的高質(zhì)量的IT人才。
參考文獻(xiàn):
[1]何莉輝,梁滄.基于ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽的學(xué)習(xí)模式[J].經(jīng)濟(jì)與文化,2008,(6):95-96.
[2]皮德常,吳慶憲.國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽與創(chuàng)新人才培養(yǎng)[J].電氣電子教學(xué)學(xué)報(bào),2008,30(3):44-45.
[3]劉鑫,楊春燕.淺談C語言程序設(shè)計(jì)教學(xué)方法[J].長(zhǎng)春理工大學(xué)學(xué)報(bào)(高教版),2009,(11).