徐艷艷 陳志泊 王春玲
(北京林業(yè)大學(xué)信息學(xué)院,北京 100083)
作為農(nóng)林院校的計算機(jī)專業(yè),北京林業(yè)大學(xué)信息學(xué)院在教學(xué)中強(qiáng)調(diào)多學(xué)科交叉、夯實(shí)理論基礎(chǔ)、重視實(shí)踐教學(xué)效果,并致力于為各行各業(yè)培養(yǎng)信息化需要的專業(yè)人才。因此,北京林業(yè)大學(xué)信息學(xué)院在重視理論教學(xué)的基礎(chǔ)上強(qiáng)化實(shí)踐教學(xué)環(huán)節(jié),著重培養(yǎng)學(xué)生用計算機(jī)解決實(shí)際問題的能力。
筆者在“程序設(shè)計”課程中不斷探索教學(xué)改革經(jīng)驗(yàn),結(jié)合北京林業(yè)大學(xué)計算機(jī)專業(yè)的教育特點(diǎn),借鑒國內(nèi)外“程序設(shè)計”課程的先進(jìn)經(jīng)驗(yàn),努力開拓教學(xué)新思路。筆者多年的教學(xué)實(shí)踐經(jīng)驗(yàn)證明,要學(xué)好“程序設(shè)計”課程,絕非熟悉語法和語義那么簡單,因此應(yīng)當(dāng)改變基于語法的教學(xué)模式,采用由問題設(shè)計算法、由算法引導(dǎo)程序的基于算法的教學(xué)模式。這種教學(xué)模式能切實(shí)提高學(xué)生的專業(yè)核心能力,提高學(xué)生使用計算機(jī)解決實(shí)際問題的能力,讓學(xué)生掌握程序設(shè)計的方法和技巧、養(yǎng)成良好的編程風(fēng)范。
“程序設(shè)計”課程是計算機(jī)科學(xué)與技術(shù)專業(yè)的專業(yè)基礎(chǔ)核心課程[1]。本課程對培養(yǎng)學(xué)生的邏輯思維能力、編程能力、獨(dú)立解決問題能力有重要意義;對計算機(jī)專業(yè)的“數(shù)據(jù)結(jié)構(gòu)”“數(shù)據(jù)庫系統(tǒng)”“操作系統(tǒng)”“編譯原理”和“軟件工程”等課程的學(xué)習(xí)起到重要基礎(chǔ)性作用。在傳統(tǒng)的“程序設(shè)計”課程中,教師主要采用基于語法的教學(xué)模式。在這種教學(xué)模式下,教學(xué)內(nèi)容主要是程序設(shè)計語言的語法和語義,教學(xué)手段主要采用多媒體課堂授課和單獨(dú)設(shè)置實(shí)驗(yàn)課的方式。在多媒體課堂上,教師單向講授;在實(shí)驗(yàn)課課堂上,學(xué)生根據(jù)教師之前的講授內(nèi)容練習(xí)相應(yīng)題目。多媒體課堂和實(shí)驗(yàn)課課堂是分開設(shè)置的,教師的講授和學(xué)生的練習(xí)被分隔開,考核的方式也采用傳統(tǒng)的閉卷筆試形式。
傳統(tǒng)的“程序設(shè)計”課程教學(xué)模式有以下弊端:①側(cè)重語法和語義的講授,導(dǎo)致學(xué)生雖然能看懂示例程序卻不能編寫程序解決實(shí)際的問題;②輕視對問題求解與算法的引導(dǎo),導(dǎo)致課堂教學(xué)內(nèi)容枯燥、缺少趣味性,使教師不能很好地與學(xué)生產(chǎn)生互動;③課堂教學(xué)和實(shí)驗(yàn)課教學(xué)分離,導(dǎo)致理論和實(shí)踐的脫節(jié),學(xué)生難以及時從實(shí)踐中深化對理論的理解。總之,筆者認(rèn)為基于語法的教學(xué)模式不能很好地培養(yǎng)學(xué)生獨(dú)立思考問題和編寫程序代碼的能力。
通過長期的教學(xué)實(shí)踐,經(jīng)過反復(fù)的思考和研究,筆者認(rèn)為必須改變這種基于語法的教學(xué)模式,用新的教學(xué)理念和方法培養(yǎng)學(xué)生。
在教學(xué)內(nèi)容上,教師把基于語法的教學(xué)內(nèi)容改為基于算法的教學(xué)內(nèi)容,而基于算法的教學(xué)內(nèi)容強(qiáng)調(diào)學(xué)生的動手實(shí)踐能力。因此,教師應(yīng)以上機(jī)編程為切入點(diǎn),通過實(shí)例講授程序設(shè)計的基本概念和方法,重點(diǎn)放在解題思路上,并針對具體問題進(jìn)行分析,構(gòu)建數(shù)學(xué)模型,最后得出算法并編寫代碼實(shí)現(xiàn)。
基于算法的教學(xué)模式強(qiáng)調(diào)問題求解、算法與編程,重視實(shí)踐教學(xué)環(huán)節(jié)。因此,筆者把在多媒體教室授課改為在機(jī)房授課,并且平時實(shí)驗(yàn)以及考試使用在線評判系統(tǒng)(Online Judge System,簡稱OJ)。
1.機(jī)房授課
在傳統(tǒng)的教學(xué)模式中,教師在多媒體教室上課,圍繞書本和PPT 對“程序設(shè)計”課程進(jìn)行口頭講授。這樣的教學(xué)模式往往重視語法的傳授,忽視了實(shí)踐教學(xué)的環(huán)節(jié)。
在這種教學(xué)模式中,課堂教學(xué)和上機(jī)練習(xí)環(huán)節(jié)是相互脫離的。往往開課一段時間后,學(xué)生才能到機(jī)房上機(jī)操作練習(xí)。教師授課和學(xué)生上機(jī)練習(xí)時間上的不連貫、不同步,造成教師的教學(xué)與學(xué)生上機(jī)操作練習(xí)的脫節(jié),使學(xué)生不能“趁熱打鐵”,導(dǎo)致教學(xué)效果的下降。上課地點(diǎn)改在機(jī)房后,教師的課堂教學(xué)與學(xué)生的上機(jī)操作練習(xí)緊密結(jié)合起來,使教與學(xué)同步進(jìn)行,這種理論學(xué)習(xí)與實(shí)踐操作的實(shí)時結(jié)合,不僅增強(qiáng)了學(xué)生學(xué)習(xí)的積極性,也使課堂教學(xué)得到了及時回饋,收到了較好的教學(xué)效果。
在機(jī)房授課時,教師將授課重點(diǎn)放在問題求解思路、算法和程序?qū)崿F(xiàn)上,教師提出問題,引導(dǎo)學(xué)生考慮算法如何實(shí)現(xiàn);學(xué)生依據(jù)教師的引導(dǎo),動手編寫程序解決問題。教師隨時了解學(xué)生的答題進(jìn)程、解答學(xué)生的疑問、指導(dǎo)學(xué)生調(diào)試程序。這樣的教學(xué)過程,能讓教師及時掌握學(xué)生的學(xué)習(xí)程度,從而及時修訂教學(xué)內(nèi)容、調(diào)整教學(xué)難度,同時能使學(xué)生多學(xué)多練,幫助學(xué)生從“要我學(xué)”轉(zhuǎn)變?yōu)椤拔乙獙W(xué)”。學(xué)生動手編寫代碼是課堂的主要內(nèi)容,教師的精講和答疑起到了輔助作用。這不僅讓學(xué)生在實(shí)踐中提高了使用計算機(jī)解決問題的能力,還能促使學(xué)生養(yǎng)成提前預(yù)習(xí)、獨(dú)立解決問題的自學(xué)習(xí)慣。
2.運(yùn)行在線評判系統(tǒng)
筆者在指導(dǎo)學(xué)生參加ACM(美國計算機(jī)協(xié)會)國際大學(xué)生程序設(shè)計競賽的過程中,通過對優(yōu)秀學(xué)生成長道路的反復(fù)思考和研究,感到有必要將“程序設(shè)計”課程同ACM 國際大學(xué)生程序設(shè)計競賽訓(xùn)練結(jié)合起來,將競賽氛圍融匯到教學(xué)工作中。
ACM 國際大學(xué)生程序設(shè)計競賽是由美國計算機(jī)協(xié)會(ACM)主辦的一項旨在展示大學(xué)生創(chuàng)新能力、團(tuán)隊精神和在壓力下編寫程序、分析和解決問題能力的年度競賽[2]。經(jīng)過30多年的發(fā)展,該競賽已經(jīng)發(fā)展成為世界上規(guī)模最大、水平最高、參與人數(shù)最多的大學(xué)生程序設(shè)計競賽。因?yàn)锳CM 國際大學(xué)生程序設(shè)計競賽的網(wǎng)絡(luò)賽和現(xiàn)場賽一般在在線評判系統(tǒng)上舉辦,因此許多高校先后開發(fā)了自己的在線評判系統(tǒng)用來訓(xùn)練隊員。北京林業(yè)大學(xué)借鑒浙江大學(xué)[3]、北京大學(xué)[4]和杭州電子科技大學(xué)的在線評判系統(tǒng)[5]的優(yōu)點(diǎn),有針對性地改進(jìn)并開發(fā)了自己的基于JSP的在線評判系統(tǒng)[6]。北京林業(yè)大學(xué)的在線評判系統(tǒng),對于訓(xùn)練ACM 競賽隊員起到了很好的基礎(chǔ)作用。
除了訓(xùn)練競賽隊員,很多高校(北京大學(xué)、北京航空航天大學(xué)、北京郵電大學(xué)等)還使用在線評判系統(tǒng)舉辦計算機(jī)相關(guān)專業(yè)的研究生招生復(fù)試機(jī)試,而一些國際知名IT 企業(yè)也使用類似的形式選拔人才。如今,在線評判系統(tǒng)已成為公認(rèn)的極具訓(xùn)練價值和選拔價值的評判系統(tǒng)。
經(jīng)過與其他高校計算機(jī)相關(guān)專業(yè)教師的研討和與一些IT 企業(yè)的溝通,筆者將在線評判系統(tǒng)引入到諸如“C語言”“面向?qū)ο蟪绦蛟O(shè)計(C++)”“Java語言”等本科生程序設(shè)計相關(guān)課程中,以提高學(xué)生的實(shí)踐能力。具體做法如下:①在在線評判系統(tǒng)上布置作業(yè)及答題。在每周的實(shí)驗(yàn)課上,教師在在線評判系統(tǒng)上布置作業(yè),而學(xué)生則根據(jù)自己的實(shí)際情況選擇題目,并可隨時提交解答的程序,同時還可得到教師的反饋意見。這樣既能發(fā)現(xiàn)常見問題以便教師在課堂上統(tǒng)一講解,又可以在一定程度上避免學(xué)生抄襲現(xiàn)象的發(fā)生。②指導(dǎo)學(xué)生每周在在線評判系統(tǒng)上做練習(xí)題。在線評判系統(tǒng)提供了大量的和課堂講授知識相對應(yīng)的優(yōu)秀題目供學(xué)生日常練習(xí)使用。③擴(kuò)充在線評判系統(tǒng)的題庫。在線評判系統(tǒng)的題庫需要及時的補(bǔ)充更新,筆者把高年級參加過ACM國際大學(xué)生程序設(shè)計競賽的優(yōu)秀學(xué)生組成助教隊伍,利用他們扎實(shí)的理論基礎(chǔ)和較高的編程水平,擴(kuò)充了在線評判系統(tǒng)的題庫。
“程序設(shè)計”課程需要學(xué)生動手編寫大量的程序,學(xué)生上機(jī)作業(yè)量很大,在這種情況下,教師要人工批改作業(yè)已不切合實(shí)際,因此使用在線評判系統(tǒng)批改作業(yè)是非常合適的。它既能讓學(xué)生實(shí)時得到反饋信息,又能把教師從繁重的作業(yè)批改中解脫出來。
傳統(tǒng)的“程序設(shè)計”課程考核方式以閉卷筆試為主,題型有選擇、填空、判斷、讀程序、程序填空、程序改錯以及編寫程序,等等。這種考核方式更多地依賴死記硬背,不能真正考察學(xué)生的編程能力。在這種考核方式中取得高分的學(xué)生,有可能只是記住了大量的語法,卻并不具備良好的設(shè)計算法和動手編程的能力。
鑒于上述問題,筆者認(rèn)為無論是期中考試還是期末考試,都要使用在線評判系統(tǒng),目的是將考核方式由筆試改為機(jī)試。另外,教師可針對不同的知識點(diǎn),要求學(xué)生在規(guī)定時間內(nèi)在在線評判系統(tǒng)上提交完整的程序并通過測試,而學(xué)生則可實(shí)時了解自己解出題目的數(shù)量和成績排名。對于學(xué)生沒有通過測試的題目,教師會詳細(xì)查看學(xué)生的答案(程序代碼),并給出合理的成績。這樣的考核方式會考驗(yàn)學(xué)生的心理承受能力,有很好的激勵作用,并且能檢驗(yàn)出學(xué)生實(shí)際編程的水平。
基于算法的教學(xué)模式在北京林業(yè)大學(xué)計算機(jī)科學(xué)與技術(shù)專業(yè)2009級、2010級、2011級和2012級的“C語言”“面向?qū)ο蟪绦蛟O(shè)計語言(C++)”“Java語言”以及“問題求解與編程”課程教學(xué)中得以逐步實(shí)施,并取得了顯著的教學(xué)成效。
從近幾年的教學(xué)改革實(shí)踐來看,學(xué)生對“程序設(shè)計”課程的學(xué)習(xí)興趣變得越來越濃厚,而且學(xué)生的編程能力也得到顯著提高。越來越多的學(xué)生報名參加北京林業(yè)大學(xué)ACM 愛好者協(xié)會組織的ACM 月賽、ACM 國際大學(xué)生程序設(shè)計競賽選拔賽等活動。特別值得一提的是:北京林業(yè)大學(xué)于2011 年獲得ACM 國際大學(xué)生程序設(shè)計競賽亞洲賽區(qū)現(xiàn)場賽1枚銅牌,2012年獲得2枚銅牌(學(xué)校排名29名)和一個榮譽(yù)提名獎。在百度之星及其他軟件大賽中,北京林業(yè)大學(xué)學(xué)生也屢次取得一等獎等好成績。
總之,筆者對“程序設(shè)計”課程的教學(xué)模式進(jìn)行了大膽改革,把基于語法的教學(xué)模式轉(zhuǎn)變?yōu)榛谒惴ǖ慕虒W(xué)模式。這種改革主要包括:在教學(xué)內(nèi)容上,把以語法作為引導(dǎo)改為以算法作為引導(dǎo);在教學(xué)手段上,把傳統(tǒng)的多媒體教室授課改為機(jī)房授課;在考核手段上,把閉卷筆試改為在在線評判系統(tǒng)上機(jī)試。實(shí)踐證明,在機(jī)房授課并在實(shí)驗(yàn)和考試中使用在線評判系統(tǒng)的教學(xué)模式更有利于培養(yǎng)學(xué)生的思考能力、提高學(xué)生的編程能力。
[1]教育部高等學(xué)校計算機(jī)科學(xué)與技術(shù)教學(xué)指導(dǎo)委員會.高等學(xué)校計算機(jī)科學(xué)與技術(shù)專業(yè)核心課程教學(xué)實(shí)施方案[M].北京:高等教育出版社,2011:23-47.
[2]劉汝佳.算法競賽入門經(jīng)典[M].北京:清華大學(xué)出版社,2009:I-IV.
[3]浙江大學(xué)ACM/ICPC 隊.浙江大學(xué)在線評判系統(tǒng)[EB/OL].(2001-03-18)[2012-10-15].http://acm.zju.edu.cn.
[4]北京大學(xué)ACM/ICPC 隊.北京大學(xué)在線評判系統(tǒng)[EB/OL].(2003-04-15)[2012-10-15].http://poj.org/.
[5]杭州電子科技大學(xué)ACM/ICPC 隊.杭州電子科技大學(xué)在線評判系 統(tǒng)[EB/OL].(2005-05-18)[2012-10-15].http://acm.hdu.edu.cn/.
[6]北京林業(yè)大學(xué)ACM/ICPC 隊.北京林業(yè)大學(xué)在線評判系統(tǒng)[EB/OL].(2005-06-01)[2012-10-15].http://bjfu.in/.