范江波+張學(xué)輝
摘要:針對程序設(shè)計(jì)類課程實(shí)踐教學(xué)模式單一、教學(xué)手法單一、考核模式紙上談兵等教學(xué)實(shí)際,分析問題存在的原因,通過程序設(shè)計(jì)在線評測平臺(tái)支撐,引入了賽教結(jié)合的教學(xué)模式,學(xué)生學(xué)習(xí)積極性得到極大提高,學(xué)習(xí)效果顯著,能力明顯提升。
關(guān)鍵詞:賽教結(jié)合;程序設(shè)計(jì);在線評測
中圖分類號:G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號:1674-9324(2017)39-0126-02
程序設(shè)計(jì)課程是國內(nèi)高校理工科學(xué)生必修的課程。程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,無論采用哪種教學(xué)語言,課程的主要目的是培養(yǎng)學(xué)生的程序設(shè)計(jì)、實(shí)現(xiàn)、測試用例編寫及程序調(diào)試能力。通過課程的學(xué)習(xí),使學(xué)生學(xué)會(huì)用計(jì)算機(jī)處理問題的思維方法,增強(qiáng)解決問題的編程實(shí)踐能力,為將來解決工程問題、科學(xué)技術(shù)問題或者從事軟件開發(fā)及后繼課程的學(xué)習(xí)奠定基礎(chǔ)。為貫徹落實(shí)《國家中長期教育改革和發(fā)展規(guī)劃綱要(2010—2020年)》,提高學(xué)生自主創(chuàng)新意識和工程實(shí)踐能力,促進(jìn)高校就業(yè)指導(dǎo)工作,需要加快高等院校計(jì)算機(jī)類課程的教學(xué)創(chuàng)新與改革。賽教結(jié)合的教學(xué)模式有利于提高學(xué)生學(xué)習(xí)的興趣和積極性,提高學(xué)生運(yùn)用基礎(chǔ)知識來解決實(shí)際問題的能力。
一、程序設(shè)計(jì)課程現(xiàn)狀及問題分析
1.學(xué)生對課程的學(xué)習(xí)目的和意義不明確。受課時(shí)及教學(xué)培養(yǎng)方案所限,授課時(shí)急于追趕進(jìn)度,按照教材的章節(jié)順序?qū)⒏鱾€(gè)知識點(diǎn)逐一教授給學(xué)生。學(xué)生對于一些知識點(diǎn)似懂非懂,一知半解,甚至許多學(xué)生并不明白學(xué)習(xí)該課程的目的和意義。這樣就造成了學(xué)生只是機(jī)械地學(xué)習(xí),而不是自主學(xué)習(xí),因而難以將整個(gè)知識體系融會(huì)貫通,導(dǎo)致應(yīng)用計(jì)算機(jī)解決實(shí)際問題的能力較弱,大多只停留在應(yīng)付課程考試或者國家計(jì)算機(jī)等級考試階段。
2.實(shí)踐教學(xué)模式單一?,F(xiàn)在的教學(xué)模式一般都采取先進(jìn)行理論教學(xué),后進(jìn)行上機(jī)實(shí)踐。學(xué)生對于理論知識消化程度不同,就容易造成學(xué)生在理論課中感到語法枯燥乏味,而算法抽象、內(nèi)容難度大,同樣對課程學(xué)習(xí)難以產(chǎn)生興趣。引入了Funcode趣味游戲?qū)嵺`教學(xué),雖然在一定程度上提高了學(xué)生興趣,但還需要繼續(xù)研究,提高學(xué)生的應(yīng)用能力和創(chuàng)新能力。
3.教學(xué)方法單一。知識點(diǎn)講解前后銜接不夠,舊知識與新知識銜接不夠,學(xué)生對于新概念的理解比較困難,講解例題過于注重算法方面的講解。課程與學(xué)生專業(yè)背景結(jié)合不緊密,學(xué)生學(xué)習(xí)興趣不高,學(xué)習(xí)積極性差。給學(xué)生訓(xùn)練的題目缺乏背景描述,公式一目了然,導(dǎo)致遇到實(shí)際問題時(shí)不知道如何分析。
4.考核模式紙上談兵。程序設(shè)計(jì)課程的考核以筆試為主,早期考察語法的選擇、填空還占據(jù)較大比重。近年來雖然轉(zhuǎn)向了程序閱讀(程序填空和程序改錯(cuò))和程序設(shè)計(jì)類型,但是仍然是學(xué)生紙上寫代碼。只能根據(jù)解題思路對代碼進(jìn)行評判,90%代碼都無法上機(jī)直接運(yùn)行。
二、賽教結(jié)合的課程改革
目前與程序設(shè)計(jì)相關(guān)的競賽種類較多,比如美國計(jì)算機(jī)學(xué)會(huì)舉辦的世界上公認(rèn)的水平最高的ACM國際大學(xué)生程序設(shè)計(jì)競賽、谷歌的Codejam、微軟的編程之美、百度的百度之星、騰訊的編程馬拉松等。但是不是所有的學(xué)生都能參加上述競賽,競賽成為少數(shù)人的精英游戲。但是競賽模式的訓(xùn)練,可以讓學(xué)生實(shí)現(xiàn)在壓力情況下編寫程序、分析和解決問題能力。
1.賽教結(jié)合的引入。傳統(tǒng)的程序設(shè)計(jì)課程,在上機(jī)實(shí)踐環(huán)節(jié),大多都是學(xué)生自行完成課后練習(xí)。在高校擴(kuò)招之后,每個(gè)課堂人數(shù)倍增,單純由老師來逐個(gè)檢測的方式已經(jīng)無法滿足教學(xué)的基本要求。學(xué)生編寫的程序無法得到即時(shí)反饋,學(xué)習(xí)效果將大打折扣。而現(xiàn)在的程序設(shè)計(jì)類競賽,所有的程序代碼評判都是機(jī)器實(shí)時(shí)進(jìn)行的。學(xué)生編寫完程序后,直接提交到評測機(jī)器上,就可以反饋回程序是否正確。反饋回的結(jié)果一般有如下幾種。①Accepted(AC):代碼正確,能夠通過全部的測試用例。②Wrong Answer(WA):代碼錯(cuò)誤,代碼不能通過全部的測試用例,部分代碼有錯(cuò)誤。③RunTime Error(RTE):程序運(yùn)行出錯(cuò),意外終止,一般遇到除數(shù)為0等情況。④Time Limit Exceeded(TLE):超時(shí),程序沒在規(guī)定時(shí)間內(nèi)出答案,一般是算法效率比較低,需要進(jìn)行優(yōu)化和改進(jìn)。⑤Presentation Error(PE):輸出格式錯(cuò),程序沒按規(guī)定的格式輸出答案。⑥Memory Limit Exceeded(MLE):超內(nèi)存,程序沒在規(guī)定空間內(nèi)出答案。⑦Compile Error(CE):編譯錯(cuò),程序存在語法錯(cuò)誤,編譯不過。學(xué)生即時(shí)查看提交程序的反饋結(jié)果,如果錯(cuò)誤,可以針對提示有針對性查找,或者尋求老師幫助。而老師,有了在線評測之后,只需要將精力集中到題目和測試用例設(shè)計(jì)上,不需要對程序代碼進(jìn)行批改。這樣工作量可以減少很多,也可以集中查找學(xué)生容易出錯(cuò)的地方,并對出錯(cuò)較多的知識點(diǎn)進(jìn)行講解。
2.賽教結(jié)合的實(shí)施。在上機(jī)實(shí)踐課程中,首先利用程序設(shè)計(jì)在線評測系統(tǒng)(Online Judge,OJ)設(shè)置一個(gè)比賽,時(shí)間可以根據(jù)題目數(shù)自行設(shè)定。題目難度排列隨機(jī),學(xué)生可以在規(guī)定時(shí)間內(nèi)對自己有把握的題目進(jìn)行編程求解,提交,并且即時(shí)得到反饋結(jié)果。比賽過程中也可以查看自己的排名。排名會(huì)按照正確解答出的題目數(shù)目進(jìn)行排名。正確解題數(shù)越多排名越靠前;如果多人解題數(shù)量相同,則根據(jù)總用時(shí)加上罰時(shí)進(jìn)行排名。總用時(shí)和罰時(shí)由每道題目成功解答的用時(shí)加上罰時(shí)組成。每道試題用時(shí)將從考試開始到試題解答被判定為正確為止,其間每一次錯(cuò)誤的運(yùn)行將被加罰20分鐘時(shí)間,未正確解答的試題不罰時(shí)。比賽結(jié)束后,輔導(dǎo)老師可根據(jù)學(xué)生對問題的解答情況進(jìn)行有針對性講解,并對出錯(cuò)的地方進(jìn)行點(diǎn)評。為了提高學(xué)生的積極性,也可以讓每個(gè)題目第一個(gè)解決出的同學(xué)對解題思路進(jìn)行分享,并考慮適當(dāng)?shù)钠綍r(shí)成績獎(jiǎng)勵(lì)。
三、賽教結(jié)合的程序設(shè)計(jì)課程效果分析
1.學(xué)生學(xué)習(xí)態(tài)度的改變。程序設(shè)計(jì)課程引入賽教結(jié)合模式之后,學(xué)生課余刷題積極性極大提高。教育不是灌輸,而是點(diǎn)燃火焰。只要學(xué)生對程序設(shè)計(jì)感興趣,有了積極性,經(jīng)過有針對性的訓(xùn)練,是可以學(xué)好程序設(shè)計(jì)的。上機(jī)實(shí)踐環(huán)節(jié)的競賽模式,學(xué)生可以實(shí)時(shí)看到自己的排名。排名靠前的有成就感,排名靠后的有追趕的目標(biāo)。大家你超我趕,在比拼過程中實(shí)現(xiàn)內(nèi)容的學(xué)習(xí)和鞏固。OJ平臺(tái)滿足了學(xué)生“刷題升級”的需求,課程結(jié)束之后很多學(xué)生因?qū)W科競賽、課程設(shè)計(jì)、創(chuàng)新實(shí)踐和畢業(yè)設(shè)計(jì)等“重返”了課程網(wǎng)站。
2.學(xué)生的學(xué)習(xí)效果。將競賽模式引入日常教學(xué)后,程序設(shè)計(jì)類課程不再紙上談兵的試卷寫代碼,采用上機(jī)實(shí)戰(zhàn)模式考核。利用OJ實(shí)現(xiàn)了考試過程可視化、競技化,考試公平、公正、公開得到了學(xué)生的認(rèn)可,考試題目不考死記硬背,題目內(nèi)容趣味化、石油化得到校內(nèi)專家的好評。以中國石油大學(xué)(華東)2015年秋季學(xué)期考試結(jié)果來看,總共有2992人參加了考試,最終在2個(gè)小時(shí)內(nèi)成功解出6題及以上的占了70%。卷面及格率達(dá)到90.5%,及格率相比筆試大大提高。學(xué)生解題能力大大提高,十個(gè)考試題目最快的1分46秒被解出,8分05秒時(shí)十個(gè)題目全部被解出。
3.學(xué)生能力明顯提升。據(jù)統(tǒng)計(jì),中國石油大學(xué)(北京)計(jì)算機(jī)系80%的學(xué)生課外上機(jī)平均12小時(shí)/周,每個(gè)學(xué)生平均累計(jì)編程行數(shù)達(dá)到3000行,達(dá)到國內(nèi)一流大學(xué)水平,考試不及格率也下降了67%。因?yàn)橛?xùn)練量飽滿,學(xué)生利用程序設(shè)計(jì)解決實(shí)際問題的能力明顯提升。以2015年為例,我校ACM程序設(shè)計(jì)大賽中的特、一、二等獎(jiǎng)獲得者9名,全部是按照ACM模式訓(xùn)練的計(jì)算機(jī)及計(jì)算機(jī)雙學(xué)位班的本科生,其中甚至出現(xiàn)了2名2015級的新生。無獨(dú)有偶,在第四屆計(jì)算機(jī)技能大賽(C程序設(shè)計(jì))的一等獎(jiǎng)獲得者10名同學(xué)中,除一名研究生獲得了第7名之外,其余9名同學(xué)均是按照ACM模式訓(xùn)練的本科生。學(xué)生參加“藍(lán)橋杯”全國軟件和信息技術(shù)專業(yè)人才大賽獲獎(jiǎng)數(shù)量和獲獎(jiǎng)等級明顯提高,近幾年累計(jì)獲得省部級獎(jiǎng)勵(lì)300多項(xiàng)。
四、結(jié)語
隨著計(jì)算機(jī)技術(shù)的發(fā)展,程序代碼自動(dòng)評測系統(tǒng)已經(jīng)成為程序設(shè)計(jì)課程實(shí)踐教學(xué)的有效輔助。有了程序設(shè)計(jì)自動(dòng)評測平臺(tái)的支撐,賽教結(jié)合的教學(xué)模式是程序設(shè)計(jì)課程的有益嘗試。這種模式提高了學(xué)生學(xué)習(xí)的主動(dòng)性、積極性,課后學(xué)生投入時(shí)間明顯增多。程序自動(dòng)評測極大減輕了教師的工作量,能夠讓教師們有更多的精力和時(shí)間投入到教學(xué)研究中去。
參考文獻(xiàn):
[1]茅海軍,葉海榮.在線評測在C程序設(shè)計(jì)實(shí)驗(yàn)教學(xué)中的研究與評價(jià)[J].中國校外教育,2012,(12):162-163.
[2]周健,鄭誠.立體化程序設(shè)計(jì)能力培養(yǎng)方法[J].計(jì)算機(jī)教育,2014,(4):56-59.endprint