摘要“高級(jí)語言程序設(shè)計(jì)”是高校學(xué)生程序設(shè)計(jì)入門課程主要包括編程語言的基礎(chǔ)知識(shí)、基本語法和程序設(shè)計(jì)基本方法。針對(duì)目前實(shí)驗(yàn)教學(xué)現(xiàn)狀及存在的問題基于的程序設(shè)計(jì)實(shí)驗(yàn)平臺(tái)被引入“高級(jí)語言程序設(shè)計(jì)”課程實(shí)驗(yàn)教學(xué)中。實(shí)踐證明基于該實(shí)驗(yàn)平臺(tái)的實(shí)驗(yàn)教學(xué)改革措施對(duì)于增強(qiáng)師生之間交互、促進(jìn)學(xué)生自主學(xué)習(xí)、幫助教師了解學(xué)生學(xué)習(xí)情況、改進(jìn)教學(xué)方式有積極作用。
關(guān)鍵詞:Online Judge;程序設(shè)計(jì);輔助教學(xué)
中圖法分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A
Teaching research of “high-level language programming”based on Online Judge
GUO Wang
(School of eMathematics and Statistics,SouthwestUniversity,Chongqing 400715,China)
Abstract:“High-level language programming” is an introductory course of programming for college students, which mainly teaches the basic knowledge, basic grammar and basic methods of programming language. In view of current experimental teaching status and existing problems,the programming experiment platform based on online judge has been introduced into the experimental teaching of “high-level language programming” course. Practice has proved that the experimental platform can help enhance the interaction between teachers and students, promote students' autonomous learning, understand students' learning and improve the teaching process.
Key words: Online Judge, programming,auxiliary teaching
“高級(jí)語言程序設(shè)計(jì)”是高校學(xué)生程序設(shè)計(jì)入門課程,主要講授編程語言的基礎(chǔ)知識(shí)、基本語法和程序設(shè)計(jì)基本方法。通過該課程理論、實(shí)驗(yàn)等環(huán)節(jié)的學(xué)習(xí)與訓(xùn)練,學(xué)生可以理解編程語言及應(yīng)用方式,掌握利用計(jì)算機(jī)解決問題的能力,培養(yǎng)計(jì)算思維,并通過實(shí)驗(yàn)鍛煉動(dòng)手能力。編程語言的掌握程度對(duì)學(xué)生后續(xù)學(xué)習(xí)有較大影響。
“高級(jí)語言程序設(shè)計(jì)”作為實(shí)踐應(yīng)用型課程,實(shí)驗(yàn)環(huán)節(jié)在教學(xué)中占有重要地位,有利于學(xué)生對(duì)理論知識(shí)的消化與吸收,培養(yǎng)其解決實(shí)際問題的能力。如何加強(qiáng)實(shí)驗(yàn)課程的過程化管理,準(zhǔn)確掌握學(xué)生學(xué)習(xí)情況,如何客觀地對(duì)學(xué)生提交的實(shí)驗(yàn)結(jié)果進(jìn)行評(píng)價(jià),如何快速地對(duì)實(shí)驗(yàn)報(bào)告進(jìn)行批改和反饋,是當(dāng)前實(shí)驗(yàn)教學(xué)面臨的普遍問題,對(duì)實(shí)驗(yàn)教學(xué)質(zhì)量有重要影響。
1實(shí)驗(yàn)教學(xué)現(xiàn)狀及存在的問題
“高級(jí)語言程序設(shè)計(jì)”課程實(shí)驗(yàn)教學(xué)形式主要是教師布置實(shí)驗(yàn)作業(yè),學(xué)生在實(shí)驗(yàn)課上進(jìn)行編程練習(xí),同時(shí)教師在現(xiàn)場進(jìn)行指導(dǎo)。實(shí)驗(yàn)習(xí)題大部分來自書本,通常利用本章節(jié)所含理論知識(shí)即可編程解決。在這個(gè)過程中,往往一位教師同時(shí)對(duì)幾十位同學(xué)進(jìn)行指導(dǎo),教師幾乎一直在響應(yīng)學(xué)生的提問,而解決一個(gè)程序問題需要閱讀學(xué)生編寫的代碼、發(fā)現(xiàn)問題并對(duì)學(xué)生進(jìn)行多方面的引導(dǎo),由于指導(dǎo)學(xué)生已經(jīng)占據(jù)了課堂的主要時(shí)間,教師通常只能在課后通過學(xué)生提交的實(shí)驗(yàn)報(bào)告掌握監(jiān)測其實(shí)驗(yàn)情況。然而,這種方式存在以下幾個(gè)問題:對(duì)于學(xué)生而言,實(shí)驗(yàn)過程中的疑問不一定立刻能夠得到老師的指導(dǎo),提交實(shí)驗(yàn)報(bào)告后也無法及時(shí)得到實(shí)驗(yàn)結(jié)果正確與否的反饋。對(duì)于教師而言,即使每次實(shí)驗(yàn)課都盡心盡力,還是無法照顧到每位學(xué)生;課后實(shí)驗(yàn)報(bào)告的批改量較大,人工批閱代碼難免遺漏一些程序邏輯錯(cuò)誤;無法針對(duì)每位學(xué)生做出反饋,且對(duì)于學(xué)生實(shí)驗(yàn)中的問題,往往需要重現(xiàn)當(dāng)時(shí)的實(shí)驗(yàn)環(huán)境和編輯運(yùn)行的狀態(tài),才能進(jìn)行針對(duì)性解決,現(xiàn)有的實(shí)驗(yàn)條件與交互方式無法實(shí)現(xiàn),而良好的交互是提高教學(xué)質(zhì)量的必要手段;缺乏學(xué)生實(shí)驗(yàn)過程監(jiān)測數(shù)據(jù),只能以實(shí)驗(yàn)報(bào)告作為判斷學(xué)生實(shí)驗(yàn)效果、給定平時(shí)實(shí)驗(yàn)成績的依據(jù)。
2 Online Judge 簡介
在線評(píng)判系統(tǒng)( Online Judge System)是一種基于 Web 的交互式程序設(shè)計(jì)訓(xùn)練系統(tǒng)[1]。在線評(píng)判系統(tǒng)的大量使用始于 ACM 程序競賽[2],為了備賽,國內(nèi)外許多大學(xué)都分別自行開發(fā)了類似的在線評(píng)判系統(tǒng),用于日常訓(xùn)練和內(nèi)部比賽。系統(tǒng)能對(duì)學(xué)生用 Web 瀏覽器提交到服務(wù)器的習(xí)題、作業(yè)等程序源代碼進(jìn)行在線編譯,生成可執(zhí)行文件,并從數(shù)據(jù)庫中調(diào)用測試數(shù)據(jù),從程序運(yùn)行的正確性、耗時(shí)、耗費(fèi)內(nèi)存及返回結(jié)果等各方面評(píng)測試代碼,并精確反饋測試結(jié)果[3]。系統(tǒng)后臺(tái)管理一個(gè)或多個(gè)題庫,提供訓(xùn)練題目,每個(gè)題目有多個(gè)測試用例,以驗(yàn)證用戶提交的代碼的正確性。測試用例一般包含多組測試輸入數(shù)據(jù)和一組正確輸出數(shù)據(jù),用戶提交程序代碼后,系統(tǒng)通過驗(yàn)證在相同輸入數(shù)據(jù)時(shí)程序是否可以分別正確地輸出結(jié)果,以判斷程序的正確性。
3基于 Online Judge 的課程實(shí)驗(yàn)教學(xué)改革
為了解決目前“高級(jí)語言程序設(shè)計(jì)”課程實(shí)驗(yàn)教學(xué)存在的問題,基于 Online Judge 的程序設(shè)計(jì)實(shí)驗(yàn)平臺(tái)被引入其實(shí)驗(yàn)教學(xué)中。課程采用了北京理工大學(xué) Python 教學(xué)團(tuán)隊(duì)主持設(shè)計(jì)的 Python123在線教學(xué)平臺(tái)[4],平臺(tái)面向 Python,C,C++等編程語言,提供課程建設(shè)和管理、習(xí)題庫建設(shè)、程序習(xí)題自動(dòng)評(píng)閱、學(xué)習(xí)數(shù)據(jù)綜合分析、混合式教學(xué)輔助等功能。
3.1按照 Bloom 教學(xué)目標(biāo)分類法組織知識(shí)點(diǎn)
布盧姆(美國當(dāng)代著名的心理學(xué)家、教育家)將認(rèn)知領(lǐng)域的教學(xué)目標(biāo)按由簡單到復(fù)雜的順序劃分為知識(shí)、領(lǐng)會(huì)、運(yùn)用、分析、綜合、評(píng)價(jià)六個(gè)層次[5],形成由低到高的階梯,對(duì)知識(shí)的掌握程度是逐步加深的,前一個(gè)層次是后一個(gè)層次的基礎(chǔ)。前三個(gè)層次(知識(shí)、領(lǐng)會(huì)、運(yùn)用)描述了聚合思維的過程,后三個(gè)層次(分析、綜合、評(píng)價(jià))描述了發(fā)散思維的過程。前者使學(xué)生回憶起來知道和理解的內(nèi)容并用于解決問題,后者使學(xué)生創(chuàng)造出經(jīng)驗(yàn)中不存在的新見解和新發(fā)現(xiàn)。
實(shí)驗(yàn)平臺(tái)支持自定義習(xí)題(圖1),習(xí)題支持選擇、判斷、填空、簡答、討論等題型,每道題目均可設(shè)置涉及的知識(shí)點(diǎn),按照 Bloom 教學(xué)目標(biāo)分類法,發(fā)布知識(shí)點(diǎn)與習(xí)題,標(biāo)注題目難度、類型,便于科學(xué)設(shè)置作業(yè)難度,分析學(xué)生知識(shí)掌握層次。也可使用系統(tǒng)已有的大量共享題庫來自建習(xí)題,以共享給其他教師,極大豐富了課程練習(xí)與作業(yè)的內(nèi)容,減輕了命題工作量,提升了命題客觀性[6]。“高級(jí)語言程序設(shè)計(jì)”課程實(shí)驗(yàn)的主要內(nèi)容都是實(shí)驗(yàn)平臺(tái)上的習(xí)題,分為基礎(chǔ)性實(shí)驗(yàn)和提高性實(shí)驗(yàn)。自建習(xí)題主要由兩部分構(gòu)成,一部分來自課程所用教材的課后習(xí)題,通常用于基礎(chǔ)性實(shí)驗(yàn),包括模仿、知識(shí)、理解和簡單應(yīng)用等較低層次目標(biāo),單題涉及知識(shí)點(diǎn)較少,綜合難度不高;另一部分來自國家計(jì)算機(jī)等級(jí)考試中的真題以及部分競賽題目,主要用于提高性實(shí)驗(yàn),包括分析、評(píng)價(jià)、綜合、設(shè)計(jì)等較高層次目標(biāo),單題涉及知識(shí)點(diǎn)較多,綜合難度顯著提高,可以增加習(xí)題的高階性、創(chuàng)新性和挑戰(zhàn)度,激發(fā)學(xué)生的解答興趣。
3.2單元模式助力實(shí)驗(yàn)考核評(píng)價(jià)改革
實(shí)驗(yàn)平臺(tái)采用練習(xí)、作業(yè)、考試三種類型的答題單元(圖2)。練習(xí)單元用于學(xué)生自主學(xué)習(xí),不設(shè)截止日期,學(xué)生提交答案后即可立即查看答案和成績,學(xué)生可以反復(fù)進(jìn)行練習(xí),在練習(xí)中不斷鞏固知識(shí)點(diǎn)。練習(xí)單元主要為基礎(chǔ)性實(shí)驗(yàn),題型主要為選擇題,通常每次練習(xí)10道選擇題。作業(yè)單元用于教師布置平時(shí)實(shí)驗(yàn)作業(yè),有明確截止日期,截止日期前無法查看答案和成績,截止后無法作答,教師可在單元教學(xué)結(jié)束后,設(shè)計(jì)單元作業(yè)題目,通過答題情況發(fā)現(xiàn)知識(shí)掌握的薄弱點(diǎn),在之后的課堂上著重講解。作業(yè)單元既包含基礎(chǔ)性實(shí)驗(yàn),也包含提高性實(shí)驗(yàn),題型包括選擇題、填空題和程序設(shè)計(jì)題,通常每次布置5道選擇題、5道填空題和2道程序設(shè)計(jì)題作為作業(yè)??荚噯卧糜趩卧獪y驗(yàn)、期中或者期末上機(jī)考試,教師設(shè)置在線試題、考試時(shí)間,考生在線答題,考試結(jié)束后,支持下載考生代碼、命題試卷、成績等,匹配教學(xué)管理要求,教師可以在整個(gè)學(xué)期不同階段開展階段性測試,幫助學(xué)生找到適合自己的學(xué)習(xí)方式。
在以往的“高級(jí)語言程序設(shè)計(jì)”課程實(shí)驗(yàn)考核中,教師主要以學(xué)生提交的實(shí)驗(yàn)報(bào)告評(píng)定實(shí)驗(yàn)成績,實(shí)驗(yàn)報(bào)告中程序代碼抄襲現(xiàn)象嚴(yán)重。與此同時(shí),考核成績存在一定的人為因素,影響成績的公正性。所以,在引入實(shí)驗(yàn)平臺(tái)后,實(shí)驗(yàn)考核將不再采用紙質(zhì)實(shí)驗(yàn)報(bào)告,而是采用實(shí)驗(yàn)報(bào)告和上機(jī)測驗(yàn)相結(jié)合的形式,而且強(qiáng)調(diào)過程考核。
3.3代碼自動(dòng)評(píng)閱,實(shí)驗(yàn)反饋提速增效
平臺(tái)提供基于 Online Judge 的代碼自動(dòng)評(píng)閱功能(圖3),可以自動(dòng)判斷學(xué)生提交的答案是否可以正確解答問題,立即反饋實(shí)驗(yàn)結(jié)果,解決教師無法兼顧每位學(xué)生的問題,同時(shí)極大減輕教師作業(yè)批改負(fù)擔(dān);教師在設(shè)置習(xí)題時(shí)可提供完整且詳細(xì)的參考答案,對(duì)于一段代碼采用多組測試用例驗(yàn)證,指引學(xué)生快速找到程序邏輯漏洞,糾正代碼錯(cuò)誤,增強(qiáng)其自主分析問題解決問題的能力,幫助他們從被動(dòng)學(xué)習(xí)轉(zhuǎn)變?yōu)橹鲃?dòng)學(xué)習(xí)。
3.4學(xué)情統(tǒng)計(jì),監(jiān)測實(shí)驗(yàn)全過程
平臺(tái)針對(duì)每一課程單元,提供作業(yè)提交率、成績分布、及格率、平均分、習(xí)題正確率、習(xí)題平均分、習(xí)題提交次數(shù)、學(xué)生學(xué)習(xí)時(shí)間、最活躍時(shí)間段等學(xué)情統(tǒng)計(jì)及可視化數(shù)據(jù)分析(圖4),針對(duì)教師所教授班級(jí),提供班級(jí)學(xué)習(xí)數(shù)據(jù)和實(shí)驗(yàn)成績,提高教師成績統(tǒng)計(jì)效率,幫助教師了解學(xué)生實(shí)驗(yàn)全過程,教師可在班級(jí)范圍內(nèi)進(jìn)行公示,增強(qiáng)學(xué)生學(xué)習(xí)的收獲感和成就感。同時(shí),教師可以通過對(duì)學(xué)生學(xué)習(xí)過程中產(chǎn)生的數(shù)據(jù)進(jìn)行管理和分析,幫助教師了解學(xué)生對(duì)知識(shí)點(diǎn)的掌握程度,及時(shí)調(diào)整教學(xué)進(jìn)度,不斷優(yōu)化教學(xué)方案。比如,對(duì)于正確率不高的習(xí)題所涉及的知識(shí)點(diǎn)可以在講評(píng)時(shí)重點(diǎn)講解。
3.5精心設(shè)計(jì)實(shí)驗(yàn)內(nèi)容,驅(qū)動(dòng)學(xué)生自主學(xué)習(xí)
“高級(jí)語言程序設(shè)計(jì)”課程實(shí)驗(yàn)教學(xué)改革首先搭建基于實(shí)驗(yàn)平臺(tái)的開放教學(xué)環(huán)境,然后,以實(shí)驗(yàn)平臺(tái)上的題目為核心,讓學(xué)生進(jìn)行探索、研究。首先,教師以實(shí)驗(yàn)平臺(tái)上的挑戰(zhàn)性問題進(jìn)行問題驅(qū)動(dòng),從而激發(fā)學(xué)生的學(xué)習(xí)興趣,刺激學(xué)生進(jìn)行自主研究。學(xué)生在閱讀實(shí)驗(yàn)問題后,思考解答方法,也可自行查閱資料。當(dāng)教師發(fā)現(xiàn)學(xué)生自主學(xué)習(xí)遇到障礙時(shí),可以進(jìn)行適當(dāng)引導(dǎo)。由于提高性實(shí)驗(yàn)難度較大,會(huì)使部分程序設(shè)計(jì)基礎(chǔ)薄弱的學(xué)生產(chǎn)生畏難情緒,對(duì)于這部分學(xué)生,可以在教學(xué)要求上實(shí)現(xiàn)分層,即不要求完成所有提高性實(shí)驗(yàn),引導(dǎo)他們首先鞏固基礎(chǔ)性實(shí)驗(yàn)。在課程后期,布置較為復(fù)雜的實(shí)驗(yàn)大作業(yè),鼓勵(lì)學(xué)生根據(jù)能力強(qiáng)弱、優(yōu)勢特點(diǎn)每3人組成一個(gè)團(tuán)隊(duì),團(tuán)隊(duì)內(nèi)部自由交流,合作尋求解決方案,在適當(dāng)?shù)臅r(shí)候教師也可以加入討論、交流,對(duì)學(xué)生加以引導(dǎo)。作業(yè)完成后,每個(gè)團(tuán)隊(duì)須提交團(tuán)隊(duì)實(shí)驗(yàn)報(bào)告,總結(jié)經(jīng)驗(yàn)與收獲,報(bào)告團(tuán)隊(duì)成員貢獻(xiàn)率。另外,額外設(shè)置部分附加實(shí)驗(yàn),引導(dǎo)學(xué)有余力的學(xué)生進(jìn)一步探究,并在考核成績中給予一定的獎(jiǎng)勵(lì)分。
4教學(xué)成效
在將程序設(shè)計(jì)實(shí)驗(yàn)平臺(tái)應(yīng)用到實(shí)驗(yàn)教學(xué)中后,教師對(duì)學(xué)生知識(shí)點(diǎn)的掌握程度了解得更加清楚,通過對(duì)錯(cuò)誤進(jìn)行分析處理,進(jìn)行示范和講解,改進(jìn)教學(xué)過程和布置相關(guān)習(xí)題練習(xí),同時(shí)大幅度減少教師批改實(shí)驗(yàn)報(bào)告的時(shí)間,形成了良好的教學(xué)反饋,增強(qiáng)學(xué)和教的體驗(yàn);學(xué)生應(yīng)用程序設(shè)計(jì)知識(shí)解決實(shí)驗(yàn)平臺(tái)上的具體問題,體會(huì)到所學(xué)知識(shí)和所編程序的價(jià)值,激發(fā)了學(xué)生的學(xué)習(xí)興趣和熱情,促進(jìn)了學(xué)生自主學(xué)習(xí),提高了學(xué)生實(shí)踐動(dòng)手能力,有利于培養(yǎng)學(xué)生綜合應(yīng)用所學(xué)知識(shí)解決實(shí)際問題的能力。圖5統(tǒng)計(jì)數(shù)據(jù)表明,使用實(shí)驗(yàn)平臺(tái)的班級(jí)學(xué)生成績較未使用實(shí)驗(yàn)平臺(tái)的班級(jí)學(xué)生成績明顯提高。圖6統(tǒng)計(jì)數(shù)據(jù)表明,教師評(píng)閱時(shí)間大幅減少。
5結(jié)語
針對(duì)“高級(jí)語言程序設(shè)計(jì)”課程實(shí)驗(yàn)教學(xué)過程中學(xué)生得到指導(dǎo)不足、實(shí)驗(yàn)結(jié)果反饋不及時(shí)、實(shí)踐動(dòng)手能力不能得到充分鍛煉等情況,同時(shí)為了減輕教師課堂和課后工作負(fù)擔(dān),更好地跟蹤學(xué)生在“高級(jí)語言程序設(shè)計(jì)”課程的學(xué)習(xí)狀態(tài)和進(jìn)展,本文構(gòu)建了一種基于 Online Judge 程序設(shè)計(jì)實(shí)驗(yàn)平臺(tái)的教學(xué)環(huán)境。該實(shí)驗(yàn)平臺(tái)可以對(duì)學(xué)生提交的程序正確性做出自動(dòng)判斷并給出結(jié)果,極大減少教師的工作量,同時(shí)學(xué)生可以立刻得到系統(tǒng)反饋并在不斷嘗試的過程中學(xué)習(xí)和積累經(jīng)驗(yàn);全面的學(xué)情數(shù)據(jù)統(tǒng)計(jì)能夠幫助教師了解學(xué)生的學(xué)習(xí)效果,不斷優(yōu)化教學(xué)方案。實(shí)踐證明,基于實(shí)驗(yàn)平臺(tái)的實(shí)驗(yàn)教學(xué)改革措施對(duì)于增強(qiáng)師生之間交互、促進(jìn)學(xué)生自主學(xué)習(xí)、幫助教師了解學(xué)生學(xué)習(xí)情況、改進(jìn)教學(xué)過程有著積極作用。
參考文獻(xiàn):
[1]吳舜歆,梁寶蘭.Online Judge 的設(shè)計(jì)與實(shí)現(xiàn)[ J].福建電腦,2012,28(2):166?167.
[2] Wasik A ,Antczak M ,Badura J ,et al.A Survey on OnlineJudge Systems? and Their Applications [ J].ACM? Computing Surveys( CSUR),2018,51(1):31?34.
[3]黃曉華,沈健,常晉義,等.基于 Online Judge 與 HTML 批注技術(shù)的實(shí)驗(yàn)教學(xué)平臺(tái)設(shè)計(jì)[J].計(jì)算機(jī)與現(xiàn)代化,2014(11):117?121.
[4]黃云,洪佳明,覃遵躍,等.基于云平臺(tái)的"程序設(shè)計(jì)基礎(chǔ)"課程實(shí)驗(yàn)教學(xué)改革[J].實(shí)驗(yàn)室研究與探索,2016,35(2):191?195+223.
[5]許小東,吳軍強(qiáng),劉小晶.基于 MOOC 的程序設(shè)計(jì)開放實(shí)驗(yàn)平臺(tái)的構(gòu)建[ J].實(shí)驗(yàn)室研究與探索,2017,36(4):157?160.
[6]廖雪花,厲蘭潔,唐思娩.基于 Online Judge 的 C 語言程序設(shè)計(jì)實(shí)驗(yàn)課教學(xué)改革研究[J].計(jì)算機(jī)教育,2016(6):130?132.
作者簡介:
郭旺(1990—),碩士,實(shí)驗(yàn)師,研究方向:軟件工程、軟件測試。