東北大學 計算機科學與工程學院 國家級計算機實驗教學示范中心 侯 帥 張立立
針對高校傳統(tǒng)編程語言類實驗課程提出了一種新型教學模式的改革方案。通過實驗室建設和教學形式變革兩個方向,將云課堂技術和OJ系統(tǒng)引入到編程實驗課程中。在實踐中打造出可以靈活部署,高效維護的實驗環(huán)境,集高強度訓練,高效管理,科學測評于一體的教學模式,對編程語言類課程實驗教學具有很好的啟發(fā)意義。
各類計算機編程語言課是大學本科計算機教學體系的重要組成部分,是學生深入了解計算機科學,掌握專業(yè)技能的重要基礎。當前,傳統(tǒng)的編程語言類課程采用課堂學習語法理論與實驗課編程練習相結合的形式。該形式在教師實驗授課效果及學生學習效果兩個方面都有不足之處。
首先,專注與興趣是各種編程語言學習的關鍵,進行大量的針對性練習是熟練掌握編程語言的必要途徑。由于實驗時間和學生人數(shù)規(guī)模等因素,實驗課上規(guī)定題目的練習方式所取得的教學效果有限。因此,引入更具互動性的教學模式,更為客觀的評價體系,進而激發(fā)學生的主觀能動性是教學改革探索的重要方向。其次,在傳統(tǒng)計算機實驗硬件教學環(huán)境下,各類編譯軟件、教學軟件都需要安裝在同一終端下,不同軟件的版本管理,更新維護,功能使用都受到單一主機終端性能的限制,同時這也是改進實驗教學模式的環(huán)境制約因素。
針對以上痛點問題,我們引入云課堂技術突破硬件環(huán)境性能瓶頸,在此基礎上,以OJ系統(tǒng)為平臺革新教學形式。在實踐中取得了良好的效果。
工欲善其事必先利其器,OJ系統(tǒng)下的教學改革需要先進的信息化技術及一定的硬件性能作為支撐才能實現(xiàn)。實驗中心引入了完整的云課堂解決方案,對專門的教學場地進行改造升級。采用多服務器負載均衡的向?qū)嶓w終端推送虛擬教學環(huán)境的架構。建設成了集虛擬化終端,云端數(shù)據(jù)管理、師生高效互動于一體的云課堂教室。
云課堂系統(tǒng)徹底解決了單一實體主機在高校計算機教學中維護困難,更新管理不便的難題。教師可以將計算機操作系統(tǒng)及應用環(huán)境整理成鏡像,上傳到云課堂系統(tǒng)統(tǒng)一管理。如圖1所示。
圖1 云課堂鏡像管理
云端服務器具有管理,更改保存教學環(huán)境的功能,教師可以將不同科目的上課內(nèi)容配置成不同鏡像,在上課前將相應的教學內(nèi)容臨時通過網(wǎng)絡發(fā)送到學生端進行教學。同時可根據(jù)教學內(nèi)容自由配置學生虛擬終端性能,充分合理的利用設備資源,使每門計算機實驗課程在共享同一組實體硬件的同時,在軟件空間上相互隔離,獲得最為高效的運行環(huán)境,保證多重教學任務順利進行。
云課堂系統(tǒng)具有強大的內(nèi)容管理功能,教師可以將所有的需要與學生共享的教學課件,教學資料視頻等上傳到云課堂中。學生可以實時獲得這些共享資源,積極進行課前預習及課后回顧,為學生自主學習創(chuàng)造了便利的條件。云課堂系統(tǒng)也在服務器端為學生提供了個人存儲空間,方便學生將個人學習成果,作業(yè)及問題及時上傳讓老師查看批改,及時的得到教師的反饋,極大的提升了師生間的互動溝通效率。
在服務端,云課堂系統(tǒng)可以通過web方便的對服務器情況進行監(jiān)控管理,方便的進行網(wǎng)絡,性能配置,并且可以部署新的web應用服務,具有很好的擴展性。在此次教學改革中,OJ系統(tǒng)就被上傳部署在該服務器中。在教師端也集成了傳統(tǒng)的網(wǎng)絡課堂工具,可以統(tǒng)一查看學生終端內(nèi)容,實時了解學生上課情況,方便的管理所有終端,如圖2所示。
圖2 云課堂教學管理工具
云課堂系統(tǒng)的建設為OJ系統(tǒng)下的教學改革奠定了堅實的環(huán)境基礎,其高效的信息化管理模式也極大的提升了教學實驗室軟件、硬件管理維護效率,減小了各類軟件的沖突域。為在有限教學環(huán)境限資源下進一步擴展高級實驗內(nèi)容創(chuàng)造了條件。
OJ(Online Judge)系統(tǒng)是一種在線評判源碼的系統(tǒng)。學生根據(jù)題目提交各種類型的源碼(C語言、JAVA、C++等)。OJ系統(tǒng)編譯執(zhí)行提交代碼,根據(jù)事先給定的樣本輸入輸出判定代碼功能是否正確。同時還可以捕捉程序執(zhí)行時間,規(guī)定內(nèi)存使用限制。可以在無需人工干預的情況下返回評判結果。是各種國內(nèi)外程序設計競賽的環(huán)境平臺。此次課程改革在東北大學自主研發(fā)的OJ系統(tǒng)的基礎上,以C語言課程為先導,開展了及題庫建設,課程規(guī)劃,數(shù)據(jù)統(tǒng)計,測評考試于一體的實驗課程建設探索工作。
基礎功能方面,學生注冊后可通過NEUOJ系統(tǒng)的題庫選擇問題提交源碼進行解答,在status中查看解題狀態(tài)。通過設定題目答案的判定條件,執(zhí)行時間,消耗內(nèi)存大小等,可以從各個角度考察學生的代碼質(zhì)量,擴展學生的編程思維方式。編程效果的及時反饋也極大的提升了互動性。激發(fā)學生學習及思考問題的熱情。系統(tǒng)功能方面提供所有學生在線活動及答題情況統(tǒng)計,收集保存學生提交的代碼,同時開放互動論壇方便學生交流互動。在教師端提供維護題庫題目,建立測評考試,實時反饋成績,建立訓練題庫等功能。整個系統(tǒng)的功能需求定位準確,扎實有效。為開展教學改革奠定了堅實的基礎。
在題庫建設方面,為了給學生更為廣闊的訓練空間,更為合理的訓練內(nèi)容,此次課程改革的訓練內(nèi)容對接了OJ原有的競賽訓練題庫,充分保證了學生發(fā)展的上限空間。同時為了保證學生循序漸進的接受新知識,中心實驗教師從國內(nèi)外C語言教材中精選習題,又新加入了百余道難度適宜,覆蓋各類知識點的新練習題。每道習題經(jīng)過錄入,編寫結果樣例,測試題目運行情況后加入題庫,保證學生正常練習。
中心實驗教師以OJ軟件功能平臺及云課堂硬件系統(tǒng)的為依托,以開放自主學習,實踐為主的理念為指導,對原有的布置習題,講解,驗收的單一實驗課程模式進行變革,將4次16學時的實驗課規(guī)劃成編程環(huán)境指導,在線練習答疑,考試測評于一體的三段式教學模式。
由于新的教學模式極大的提升了教學效率,解放了教師統(tǒng)一驗收,講解題目的教學時間。為了更好的利用現(xiàn)場教學機會,突出實驗課的應用性特色。在實驗的第一課引入了新的教學內(nèi)容,突出強調(diào)了原有的實驗環(huán)境引導介紹部分。具體包括介紹課堂當前講授的編程語言對比其它編程語言的特點,解釋源代碼經(jīng)過預編譯,生成目標文件,鏈接,可執(zhí)行的整個過程。查看整個過程中生成的各種文件。介紹各類編譯器VS,CodeBlock等的簡單使用,查看工程,講解一些編譯軟件的整體設置等。組織具體案例講解如何編譯程序,通過設置斷點,查看變量等方式調(diào)試程序的Bug。向?qū)W生介紹簡單其它的編譯環(huán)境,如linux環(huán)境下的 gcc工具等。通過更為集中詳盡的講解讓學生熟悉編程環(huán)境,了解程序編譯的基本原理。為后續(xù)編寫運行程序掃清一定的工具使用障礙。
新模式的日常教學以完成題庫題目為主,在學期上課前,以本學期理論課知識點為線索精選題目建立基本訓練集。由于OJ系統(tǒng)全天開放,學生的學習活動就可以擺脫空間束縛,從課堂延伸到課下,學習進度完全自主決定。在第二次,第三次實驗課現(xiàn)場采用以學生為主,教師輔助答疑的模式。進一步啟發(fā)學生的自主學習興趣。
相較與以往每節(jié)課驗收學生完成固定題目代碼的方式,配套的新的成績評定考核標準可以更加客觀準確的從平時表現(xiàn)和編程水平兩個維度評價學生的學習情況。學生的成績由3部分構成,基礎作業(yè)的完成情況30%,題庫中額外練習情況20%,結課測試50%。通過統(tǒng)計每位學生提交代碼的錯誤率,題目完成情況,可以準確量化學生平時表現(xiàn)分數(shù)。最終的考試由OJ系統(tǒng)生成,如圖3所示。
圖3 OJ編程考試
NEUOJ系統(tǒng)可以在線生成考試,經(jīng)過便捷的設置可以準確批量導入學生信息,設定考試開放權限??荚囶}目來源可以選定題庫中已有的題目,也可以臨時設置題目。在實際使用中,如果場地規(guī)模受限,可隨機抽調(diào)生成多組題目作為考試備選。考試過程中,OJ系統(tǒng)可實時判定學生上傳的代碼,監(jiān)控考試進度,生成導出學生成績排名,實現(xiàn)大規(guī)模編程考試的自動化評判。
本次教學改革在2017級計算機專業(yè),電子專業(yè)共13個班,400余學生中開展。取得了一些寶貴的實踐經(jīng)驗。
OJ系統(tǒng)可以及時直觀的反饋所有學生平時的學習狀態(tài),系統(tǒng)數(shù)據(jù)可以實時記錄學生完成課內(nèi)課外題目數(shù)量,每個題目代碼的提交次數(shù),代碼的執(zhí)行時間,消耗的內(nèi)存等。如圖4所示。
圖4 學生平時編程情況統(tǒng)計
這些統(tǒng)計數(shù)據(jù)使得教師可以從多個維度側面獲取學生編程基礎,練習代碼量,學習主動性,編程習慣等信息。掃清了過去但難易統(tǒng)計,但對評價學生非常重要的數(shù)據(jù)盲區(qū)。老師通過統(tǒng)計數(shù)據(jù)可以在大量學生中快速定位到完成情況不佳的學生,詢問他們的實際情況,及時提供幫助。切實通過技術手段調(diào)動有限的教學資源高效分配,提升教學效果。
相較于傳統(tǒng)的教學方式,開放題庫的練習模式極大的提升了學生的編程能力,取得了很好的教學效果。首先,代碼訓練量顯著增加。由于OJ系統(tǒng)可以自動實時判定代碼提交結果,可以一定程度上不受師資人數(shù)制約達到及時反饋指導的效果,本次教學改革中事先編制的入門題目數(shù)量較往年提升了一倍。在完成基礎的規(guī)定題目熟悉語法之后,學生可以自由嘗試題庫中的題目,給予其自由發(fā)揮的空間。評分政策上,基于OJ系統(tǒng)的數(shù)據(jù)統(tǒng)計,對于完成額外題目的學生給予獎勵。在環(huán)境條件與評分政策的雙重引導下,本學期有50%以上的同學不同程度的參與完成題庫內(nèi)外擴展題目。
在這種及時反饋與闖關形式的激勵下,學生的自我學習熱情被極大的調(diào)動起來,在平時的指導過程中。這些初次接觸編程的學生經(jīng)過短時間的練習之后可以主動提出很多有關程序執(zhí)行時間、數(shù)據(jù)結構使用等有關算法的更深入的問題,也嘗試通過查詢資料自行尋找解決方案。為他們后續(xù)的進階學習打下了堅實的基礎。
而在OJ在線評測的教學環(huán)境下,教師所面對的問題將不再局限與課堂上的內(nèi)容,課堂上學生對于算法,底層語言等各種開放性問題明顯增多。老師需要在學生基礎薄弱的情況下,盡量將所涉及到的知識概念用直觀的方式解釋清楚。對實驗教師的教學水平提出了更高的要求。
本次教學改革從硬件云環(huán)境的部署做起,通過將OJ系統(tǒng)與實驗教學緊密結合,使得實驗教師從重復性的機械性工作內(nèi)容中解放出來,充分利用有限的學時提升教學內(nèi)容的質(zhì)量。學生在多元化形式的教學及評價體系中,自我學習的能動性極大增強,教學效果得到了全面提升。
而本次實踐另一點重要的意義在于,教學環(huán)境的虛擬化與學生統(tǒng)計數(shù)據(jù)的信息化所形成的大數(shù)據(jù)為未來課程改革中進一步發(fā)現(xiàn)問題,進而做出科學決策奠定了基礎。例如通過統(tǒng)計題型的通過率更為精確的掌握學生的學習難點,通過學生的反饋數(shù)據(jù)實時跟蹤學生的學習進度,繪制學習曲線。隨著系統(tǒng)開放訪問范圍的增大,更多教學數(shù)據(jù)會快速積累,借助云平臺優(yōu)勢可以將現(xiàn)有的大數(shù)據(jù)科學分析方法引入到實踐教學中,幫助挖掘潛在問題,實現(xiàn)實驗課程持續(xù)迭代改進。以云平臺和OJ系統(tǒng)為基礎的課程改革解決方案可以便捷的推廣到其它編程語言類教學課程中,在多次實踐中通過數(shù)據(jù)分析編程語言的教學特點,定位存在的問題,幫助實驗教學質(zhì)量整體提高。