苗桂君 劉勇 許南山 張靜 韓靜文



摘要:通過分析程序設計類課程教學中存在的問題及各高校在線評測系統的應用現狀和教學模式,提出了基于北京化工大學在線評測系統的程序設計類課程教學模式,并將此模式應用于北京化工大學4屆計算機科學與技術專業的課程教學中,積累了大量的實踐活動原始數據。科學合理的數據分析證明,該教學模式取得了.良好的教學效果。
關鍵詞:在線評測;程序設計;實踐教學
0.引言
程序設計類課程具有入門難、兩極分化嚴重、實踐性強等特點,多數高校依賴計算機實驗和綜合課程設計,進行大量編程鞏固訓練,培養學生分析問題和以程序設計思想解決實際問題的能力。然而,上述實踐教學方式的教學效果并不理想,主要問題概括為以下幾個方面:
(1)程序設計類課程一般為5個班以上的大班教學,1名教師要同時指導200名左右的學生進行上機實驗,教師工作壓力大,監督能力有限,且無法及時了解每名學生的實驗完成情況,沒有時間和精力對學生提交的作業一一進行上機驗證,只能通過抽檢的方式檢查,導致抄襲現象嚴重。
(2)上機實驗教學通常是根據課堂講課進度安排,實驗課時一般為2學時或4學時,上機時間有限,只能以對課堂理論知識的驗證和鞏固理解為目的,不能進行有效的編程設計能力的訓練,導致學生實際程序設計和調試能力差。
(3)進行上機實驗的案例一般通過教材或課件提供,案例陳舊,不方便更新,覆蓋知識點不全,且缺乏實用性和趣味性,因而很難調動學生學習的積極性和主動性。
(4)通過上機考勤、實驗作業、課程設計報告等手段無法全面掌握和客觀評價學生的學習情況,不利于學生動手操作能力和創新能力的培養。
所以,如何滿足新時期教育發展的需求,如何提高實踐教學的教學效果,是高校教師亟待解決的問題。隨著我國教育信息化研究的不斷深入和進程的不斷加快,各大高校紛紛將現代教育技術引入到實踐課教學的改革中來。為此,筆者將北京化工大學在線評測系統應用到計算機科學與技術專業的程序設計類實踐教學中,提出了符合學生認知和教學規律的教學模式,在對所收集的大量實踐教學活動原始數據進行科學合理統計和分析的基礎上得出,該教學模式能激發學生的學習興趣,并在一定程度上提高教學質量。
1.在線評測系統應用現狀
在線評測(online judge,OJ)系統,起源于ACM國際大學生程序設計競賽(ACMInternational Collegiate Programming Contest,ACMICPC),經過ACM競賽近30年的發展,各大高校紛紛開發了屬于自己的在線評測系統。其中,國外知名高校的在線評測系統有美國弗吉尼亞大學的UVA OJ系統、俄羅斯薩拉托夫國立大學的SGU OJ系統、俄羅斯烏拉爾國立大學的URAL OJ系統,另外還有一些國外公司開發的知名網站,包括TopCoder公司的TopCoder網站、Directi公司的CodeChef網站、CodeForces公司的CodeForces網站等。國內知名的在線評測系統中,最早開發在線評測系統的高校是浙江大學,其在線評測系統為ZOJ。提交次數最高的OJ系統是北京大學的pojE21,提交次數僅次于POJ的是杭州電子科技大學的HDOJ。其中,浙江大學的ZOJ、北京交通大學的BOJ、華中科技大學的HustOJ作為開源在線評測系統,具有很高的實用性。另外,哈爾濱工業大學、南開大學、吉林大學、福州大學等高校也先后開發了在線評測系統。這些評測系統,不僅被廣泛應用于競賽的集訓和程序設計類課程的教學當中,還對外開放注冊,為其他高校的程序愛好者們提供服務。
2.基于在線評測系統的教學模式
目前,在線評測系統廣泛應用在各大高校程序設計類課程中,其現有教學模式可以通過以下3個方面進行總結:實驗教學、課程范圍、教學效果評價。
在實驗教學方面,各大高校將該系統直接應用于程序設計類課程的上機實驗教學。任課教師根據程序設計類課程的實驗內容和具體要求,合理設置實驗任務,新增題目或者從題庫中選擇合適的題目供學生上機練習。學生在編寫、調試完程序后,將程序提交給評測系統進行判斷。評測系統會在后臺進行編譯,并結合測試輸入樣例得出運行結果,與測試輸出樣例進行比對,給出評判結果。任課教師通過系統可以實時了解學生的做題情況并給予指導。該系統的使用,使得教師一人可以同時指導幾個班級的學生一起上機,大大減輕教師的工作壓力,還能避免作業抄襲現象。學生課后,可以繼續登錄系統,完成未完成的實驗,保證了教學的連續性,在一定程度上,提高了教學質量。
在課程范圍方面,該系統的應用主要集中在C/C++語言的教學上,對C/C++語言的教學質量有很大提高。而對于其他計算機專業相關的課程,例如數據結構、編譯原理、計算機組成原理、數據庫原理等很少涉及。
在教學效果評價方面,各大高校一般使用課程平均成績的對比數據或者調查報告的形式來評測其教學效果,沒有進行更科學有力的數據分析,不能有效說明對學生編程能力的提高是否有實質性的幫助。
3.本校實例
3.1北京化工大學在線評測系統
為了收集一手的實踐教學研究數據,我校于201 1年基于改進的開源系統HustOJ開發了北京化工大學在線評測系統(online judge system ofBUCT),主要用于參加ACM競賽的隊員集訓、校內周賽、跨校區組織的月賽以及我校程序設計類課程的實踐教學中。
北京化工大學在線測評系統使用php語言開發,后臺數據庫使用MySQL,采用B/S架構,主要系統模塊包括系統維護、題庫管理與訓練、實時狀態與排名、競賽及作業管理、名校聯賽、北化程序員論壇、數據統計等,評測系統的主界面如圖1所示。該系統支持C/C++、c#、Pascal、Java、Python、VB等常用編程語言。在使用過程中,筆者非常注重題庫的管理,經過不斷豐富和完善,系統題庫現有題目1600多道,題目類型涵蓋了數據結構、算法設計與分析、C/C++語言程序設計、Java語言程序設計、程序設計實訓、ACM/ICPC程序設計方法與實踐等幾門課程的主要知識點。并為滿足不同水平學生的練習需求,將題庫題目按難度系數劃分為5個等級,在一定程度上激發了學生對程序設計類課程的學習興趣。
其中,數據統計模塊使用數據可視化技術,從數據庫中獲取有意義的數據,通過highcharts、thinkphp等技術將數據分析結果進行圖形化展示,從而可以更直觀的了解學生在線評測系統的使用情況。
3.2OJ系統在我校的應用
經過近4年的教學實踐,我校已形成一整套基于在線評測系統的程序設計類課程的教學方案,具體包括實踐教學、教學效能、考核評價機制、激勵機制4個方面。
3.2.1實時評測、反饋調控的互動實踐教學模式
系統管理員在開學初將每屆的學生信息導人到評測系統,根據學號生成相應的用戶賬號。任課教師可以通過評測系統的狀態顯示功能,查看學生的做題情況,實時跟蹤學生的做題進度,對學生做題過程中遇到的共性問題給予針對性的講解和及時指導,還可對排名靠后的學生進行重點輔導。為適應不同層次學生的學習需求,教師可以根據學生的知識掌握情況,及時調整實驗任務的難度和數量,進行題目的分級分類,從而達到有效反饋、合理調控、提高課堂教學效果的目的。
3.2.2簡化作業批改,提高教學效能
教師把課后作業題目掛到在線評測系統上,設置好起止時間,學生通過在線評測系統按時間要求進行作業提交,系統會統計出每道題目的提交次數、提交通過的題目數量及所使用的編程語言,對本次作業的完成情況進行排名,并可導出到Excel文件進行備案。教師可以方便地獲取到所有學生每道題目的做題情況,記錄總結學生遇到的典型問題,在課堂教學中進行針對性講解。在線評測系統的使用,簡化作業批改,使教師可以注重教育教學及自身素質的提高,從而提高教學效能。學生提交作業后,系統會快速給出評判結果,及時得知作業完成情況,即可進行后續修改與再次提交,與傳統收發作業的模式相比,這種方式科學運用了生物心理學的規律,既縮短了反饋周期,又能激發學生的學習潛能和學習熱隋。
3.2.3公平客觀的考核評價機制
加大實踐考核力度,使用在線評測系統進行實驗課考核,操作實施方便,評判結果公正客觀。學生通過使用在線評測系統,可實現對每次考核內容的系統化管理,發現當前課程學習的薄弱部分,主動彌補。每次考核都會給出系統排名,可使學生意識到學習差距,從而能對自身提出更高要求,調動學生學習積極性。
3.2.4創建科學合理的學習激勵機制
評測系統會根據提交通過題目數量、提交通過比率給出總排名,從而鞭策落后的學生努力追趕,激勵名列前茅的學生努力保持。另外,在每門課的教學中,設立“正確題目最多獎”“正確率最高獎”“通過高難度題目最多獎”;以宿舍為單位,統計每個宿舍完成題目數量進行排名;將ACM競賽機制引入實踐課教學中,每學期開展花樣程序設計類競賽,如課程月賽、周賽、以慶祝某個節假日為由的節日賽等。通過以上不同形式的激勵,激發學生的學習動力,引導學生培養良好的學習習慣,形成積極向上的學習氛圍,從而促進教學質量的提高。
4.教學效果分析
在2011-2014共4屆學生的程序設計類實踐教學中,“數據結構”“編譯原理”“計算機科學導論”“操作系統原理”等課程的實踐課教學先后被納入在線評測系統中。下面將對2015年5月份之前的實踐教學數據進行詳細對比分析。
4.1各年級做題提交情況對比
各年級做題提交情況對比如表1所示,其中2013級的提交次數最多,正確率最高,對評測系統的使用效果最好,2011級和2012級由于教學模式未完全轉變,對評測系統處于初步嘗試階段,2014級由于使用時間較短,故提交次數偏低。
4.2一年中不同月份做題提交情況分析
圖2列出了2013年和2014年2年中不同月份提交總次數變化規律,由圖2可看出,2013年該曲線變化情況為:1-4月、8-12月,隨著課程教學的不斷深入,提交總次數呈逐漸上升趨勢,但是5、6月份由于學生準備期末考試,提交總次數下滑,8月份由于是暑假,學生做題積極性不高。總結2013年做題提交情況,2014年學校調整教學和考核方案,加大實踐課教學力度,并將在線評測系統應用于小學期實踐教學中,所以5、6月和10月的做題提交總次數達到峰值。
4.3各班級男女生做題提交情況對比
圖3為計科2013級6個班級男女生的做題情況匯總。其中,每個班的總學生數和男女生比例相近,但卻呈現出不同的提交情況分布。據調查,2班的班主任曾引導2班學生利用課余時間在系統上做題,所以2班提交總次數最多,達8823次,整體編程水平也較強。由圖3可見,6個班級中,男生提交總次數為28028次,女生提交總次數為10782次,由于計科班級中,男女生比例大約為3:1,整體來說,男女生提交次數之比大約為2.55:1,女生平均提交次數略高于男生,可見,通過使用在線評測系統,女生的動手實踐能力也得到提高。
4.4各宿舍做題人的提交情況對比
圖4將計科2013級學生以宿舍為單位,列出了28個宿舍的做題人均提交情況。由圖4可以看出,人的提交次數超過400次的有5個宿舍,其中人的提交次數最多的達720次,經過調查統計得知,這些宿舍有學生參加ACM/ICPC或者“藍橋杯”軟件大賽,因為個別學生對編程的愛好而引發整個宿舍學生的學習熱情。所以,建議學校在大一學年結束時,可根據所有學生做題提交情況,合理調配宿舍成員,以一帶多、相互促進、共同提高,豐富學生日常學習生活,激發學生團隊意識,從而達到提高整個寢室學習狀況的效果。
4.5課程總成績、績點與提交次數關系分析
圖5列出了計科2012級數據結構和編譯原理2門課程的期末總成績、績點與提交次數之間的關系。由圖5可看出,提交次數與課程總成績、績點曲線變化基本一致,大致成正比關系,學生做題的提交次數越多,課程成績越高,績點越高,反之亦然。該圖進一步驗證了在線評測系統的應用能有效提高程序設計類課程的教學質量和教學效果。
4.6提交通過的題目數量與各科成績相關性對比
公式中:COV為協方差;σx、σy為標準差;E為數學期望;變量x、y分別為所有學生提交通過的題目數量與各科考試成績或平均學分統點。
由圖6可見,ACM/ICPC程序設計方法與實踐、編譯原理、Linux/Unix編程基礎、計算機科學導論、數據結構等專業核心課程,期末成績與提交通過的題目數量的相關系數較大,故兩者相關性較大,而數據倉庫與數據挖掘、數據庫原理、計算機組成原理、操作系統原理等課程的相關系數太小,表示兩者相關性小。數據倉庫與數據挖掘課程是大一第二學期開設的,學生在上課的時候普遍沒有編程基礎,該課成績與在線評測系統提交通過的題目數量相關性不大。數據庫原理、計算機組成原理等課程由于題庫中的相關習題較少,學生做題量小,故相關性較小。所以后續需要繼續豐富相關課程在線評測系統的題庫,根據課程內容設置相應的題目,發揮在線評測系統在這些課程中的作用,實現評測系統在上述課程中的全面應用。
通過此相關系數還可看出,學生提交通過的題目數量越多,編程能力越強,課程成績越好,故在教學中需大力引導學生注重編程基礎,提高動手實踐和編程操作能力。
5.結論
經過4屆學生的教學實踐證明,文中提出的基于我校在線評測系統的程序設計類課程的教學模式,取得了良好的教學效果。但是教師的宏觀把控和引導監督作用不可忽視,雖然在線評測系統的應用將學生的學習由被動接受轉向自主學習,但不能過分依賴系統,如果缺乏教師適時地引導監督,容易導致學生缺乏創新、過度自我管理或者學習隔靴搔癢、流于形式等問題。在此基礎上,如何充分發揮在線評測系統的教學應用價值還需要進一步研究。希望本文的研究成果能為各高校程序設計類課程的教師提供幫助和參考。