


摘要“高級語言程序設計”是高校學生程序設計入門課程主要包括編程語言的基礎知識、基本語法和程序設計基本方法。針對目前實驗教學現狀及存在的問題基于的程序設計實驗平臺被引入“高級語言程序設計”課程實驗教學中。實踐證明基于該實驗平臺的實驗教學改革措施對于增強師生之間交互、促進學生自主學習、幫助教師了解學生學習情況、改進教學方式有積極作用。
關鍵詞:Online Judge;程序設計;輔助教學
中圖法分類號:TP311文獻標識碼: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
“高級語言程序設計”是高校學生程序設計入門課程,主要講授編程語言的基礎知識、基本語法和程序設計基本方法。通過該課程理論、實驗等環節的學習與訓練,學生可以理解編程語言及應用方式,掌握利用計算機解決問題的能力,培養計算思維,并通過實驗鍛煉動手能力。編程語言的掌握程度對學生后續學習有較大影響。
“高級語言程序設計”作為實踐應用型課程,實驗環節在教學中占有重要地位,有利于學生對理論知識的消化與吸收,培養其解決實際問題的能力。如何加強實驗課程的過程化管理,準確掌握學生學習情況,如何客觀地對學生提交的實驗結果進行評價,如何快速地對實驗報告進行批改和反饋,是當前實驗教學面臨的普遍問題,對實驗教學質量有重要影響。
1實驗教學現狀及存在的問題
“高級語言程序設計”課程實驗教學形式主要是教師布置實驗作業,學生在實驗課上進行編程練習,同時教師在現場進行指導。實驗習題大部分來自書本,通常利用本章節所含理論知識即可編程解決。在這個過程中,往往一位教師同時對幾十位同學進行指導,教師幾乎一直在響應學生的提問,而解決一個程序問題需要閱讀學生編寫的代碼、發現問題并對學生進行多方面的引導,由于指導學生已經占據了課堂的主要時間,教師通常只能在課后通過學生提交的實驗報告掌握監測其實驗情況。然而,這種方式存在以下幾個問題:對于學生而言,實驗過程中的疑問不一定立刻能夠得到老師的指導,提交實驗報告后也無法及時得到實驗結果正確與否的反饋。對于教師而言,即使每次實驗課都盡心盡力,還是無法照顧到每位學生;課后實驗報告的批改量較大,人工批閱代碼難免遺漏一些程序邏輯錯誤;無法針對每位學生做出反饋,且對于學生實驗中的問題,往往需要重現當時的實驗環境和編輯運行的狀態,才能進行針對性解決,現有的實驗條件與交互方式無法實現,而良好的交互是提高教學質量的必要手段;缺乏學生實驗過程監測數據,只能以實驗報告作為判斷學生實驗效果、給定平時實驗成績的依據。
2 Online Judge 簡介
在線評判系統( Online Judge System)是一種基于 Web 的交互式程序設計訓練系統[1]。在線評判系統的大量使用始于 ACM 程序競賽[2],為了備賽,國內外許多大學都分別自行開發了類似的在線評判系統,用于日常訓練和內部比賽。系統能對學生用 Web 瀏覽器提交到服務器的習題、作業等程序源代碼進行在線編譯,生成可執行文件,并從數據庫中調用測試數據,從程序運行的正確性、耗時、耗費內存及返回結果等各方面評測試代碼,并精確反饋測試結果[3]。系統后臺管理一個或多個題庫,提供訓練題目,每個題目有多個測試用例,以驗證用戶提交的代碼的正確性。測試用例一般包含多組測試輸入數據和一組正確輸出數據,用戶提交程序代碼后,系統通過驗證在相同輸入數據時程序是否可以分別正確地輸出結果,以判斷程序的正確性。
3基于 Online Judge 的課程實驗教學改革
為了解決目前“高級語言程序設計”課程實驗教學存在的問題,基于 Online Judge 的程序設計實驗平臺被引入其實驗教學中。課程采用了北京理工大學 Python 教學團隊主持設計的 Python123在線教學平臺[4],平臺面向 Python,C,C++等編程語言,提供課程建設和管理、習題庫建設、程序習題自動評閱、學習數據綜合分析、混合式教學輔助等功能。
3.1按照 Bloom 教學目標分類法組織知識點
布盧姆(美國當代著名的心理學家、教育家)將認知領域的教學目標按由簡單到復雜的順序劃分為知識、領會、運用、分析、綜合、評價六個層次[5],形成由低到高的階梯,對知識的掌握程度是逐步加深的,前一個層次是后一個層次的基礎。前三個層次(知識、領會、運用)描述了聚合思維的過程,后三個層次(分析、綜合、評價)描述了發散思維的過程。前者使學生回憶起來知道和理解的內容并用于解決問題,后者使學生創造出經驗中不存在的新見解和新發現。
實驗平臺支持自定義習題(圖1),習題支持選擇、判斷、填空、簡答、討論等題型,每道題目均可設置涉及的知識點,按照 Bloom 教學目標分類法,發布知識點與習題,標注題目難度、類型,便于科學設置作業難度,分析學生知識掌握層次。也可使用系統已有的大量共享題庫來自建習題,以共享給其他教師,極大豐富了課程練習與作業的內容,減輕了命題工作量,提升了命題客觀性[6]。“高級語言程序設計”課程實驗的主要內容都是實驗平臺上的習題,分為基礎性實驗和提高性實驗。自建習題主要由兩部分構成,一部分來自課程所用教材的課后習題,通常用于基礎性實驗,包括模仿、知識、理解和簡單應用等較低層次目標,單題涉及知識點較少,綜合難度不高;另一部分來自國家計算機等級考試中的真題以及部分競賽題目,主要用于提高性實驗,包括分析、評價、綜合、設計等較高層次目標,單題涉及知識點較多,綜合難度顯著提高,可以增加習題的高階性、創新性和挑戰度,激發學生的解答興趣。
3.2單元模式助力實驗考核評價改革
實驗平臺采用練習、作業、考試三種類型的答題單元(圖2)。練習單元用于學生自主學習,不設截止日期,學生提交答案后即可立即查看答案和成績,學生可以反復進行練習,在練習中不斷鞏固知識點。練習單元主要為基礎性實驗,題型主要為選擇題,通常每次練習10道選擇題。作業單元用于教師布置平時實驗作業,有明確截止日期,截止日期前無法查看答案和成績,截止后無法作答,教師可在單元教學結束后,設計單元作業題目,通過答題情況發現知識掌握的薄弱點,在之后的課堂上著重講解。作業單元既包含基礎性實驗,也包含提高性實驗,題型包括選擇題、填空題和程序設計題,通常每次布置5道選擇題、5道填空題和2道程序設計題作為作業。考試單元用于單元測驗、期中或者期末上機考試,教師設置在線試題、考試時間,考生在線答題,考試結束后,支持下載考生代碼、命題試卷、成績等,匹配教學管理要求,教師可以在整個學期不同階段開展階段性測試,幫助學生找到適合自己的學習方式。
在以往的“高級語言程序設計”課程實驗考核中,教師主要以學生提交的實驗報告評定實驗成績,實驗報告中程序代碼抄襲現象嚴重。與此同時,考核成績存在一定的人為因素,影響成績的公正性。所以,在引入實驗平臺后,實驗考核將不再采用紙質實驗報告,而是采用實驗報告和上機測驗相結合的形式,而且強調過程考核。
3.3代碼自動評閱,實驗反饋提速增效
平臺提供基于 Online Judge 的代碼自動評閱功能(圖3),可以自動判斷學生提交的答案是否可以正確解答問題,立即反饋實驗結果,解決教師無法兼顧每位學生的問題,同時極大減輕教師作業批改負擔;教師在設置習題時可提供完整且詳細的參考答案,對于一段代碼采用多組測試用例驗證,指引學生快速找到程序邏輯漏洞,糾正代碼錯誤,增強其自主分析問題解決問題的能力,幫助他們從被動學習轉變為主動學習。
3.4學情統計,監測實驗全過程
平臺針對每一課程單元,提供作業提交率、成績分布、及格率、平均分、習題正確率、習題平均分、習題提交次數、學生學習時間、最活躍時間段等學情統計及可視化數據分析(圖4),針對教師所教授班級,提供班級學習數據和實驗成績,提高教師成績統計效率,幫助教師了解學生實驗全過程,教師可在班級范圍內進行公示,增強學生學習的收獲感和成就感。同時,教師可以通過對學生學習過程中產生的數據進行管理和分析,幫助教師了解學生對知識點的掌握程度,及時調整教學進度,不斷優化教學方案。比如,對于正確率不高的習題所涉及的知識點可以在講評時重點講解。
3.5精心設計實驗內容,驅動學生自主學習
“高級語言程序設計”課程實驗教學改革首先搭建基于實驗平臺的開放教學環境,然后,以實驗平臺上的題目為核心,讓學生進行探索、研究。首先,教師以實驗平臺上的挑戰性問題進行問題驅動,從而激發學生的學習興趣,刺激學生進行自主研究。學生在閱讀實驗問題后,思考解答方法,也可自行查閱資料。當教師發現學生自主學習遇到障礙時,可以進行適當引導。由于提高性實驗難度較大,會使部分程序設計基礎薄弱的學生產生畏難情緒,對于這部分學生,可以在教學要求上實現分層,即不要求完成所有提高性實驗,引導他們首先鞏固基礎性實驗。在課程后期,布置較為復雜的實驗大作業,鼓勵學生根據能力強弱、優勢特點每3人組成一個團隊,團隊內部自由交流,合作尋求解決方案,在適當的時候教師也可以加入討論、交流,對學生加以引導。作業完成后,每個團隊須提交團隊實驗報告,總結經驗與收獲,報告團隊成員貢獻率。另外,額外設置部分附加實驗,引導學有余力的學生進一步探究,并在考核成績中給予一定的獎勵分。
4教學成效
在將程序設計實驗平臺應用到實驗教學中后,教師對學生知識點的掌握程度了解得更加清楚,通過對錯誤進行分析處理,進行示范和講解,改進教學過程和布置相關習題練習,同時大幅度減少教師批改實驗報告的時間,形成了良好的教學反饋,增強學和教的體驗;學生應用程序設計知識解決實驗平臺上的具體問題,體會到所學知識和所編程序的價值,激發了學生的學習興趣和熱情,促進了學生自主學習,提高了學生實踐動手能力,有利于培養學生綜合應用所學知識解決實際問題的能力。圖5統計數據表明,使用實驗平臺的班級學生成績較未使用實驗平臺的班級學生成績明顯提高。圖6統計數據表明,教師評閱時間大幅減少。
5結語
針對“高級語言程序設計”課程實驗教學過程中學生得到指導不足、實驗結果反饋不及時、實踐動手能力不能得到充分鍛煉等情況,同時為了減輕教師課堂和課后工作負擔,更好地跟蹤學生在“高級語言程序設計”課程的學習狀態和進展,本文構建了一種基于 Online Judge 程序設計實驗平臺的教學環境。該實驗平臺可以對學生提交的程序正確性做出自動判斷并給出結果,極大減少教師的工作量,同時學生可以立刻得到系統反饋并在不斷嘗試的過程中學習和積累經驗;全面的學情數據統計能夠幫助教師了解學生的學習效果,不斷優化教學方案。實踐證明,基于實驗平臺的實驗教學改革措施對于增強師生之間交互、促進學生自主學習、幫助教師了解學生學習情況、改進教學過程有著積極作用。
參考文獻:
[1]吳舜歆,梁寶蘭.Online Judge 的設計與實現[ 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 批注技術的實驗教學平臺設計[J].計算機與現代化,2014(11):117?121.
[4]黃云,洪佳明,覃遵躍,等.基于云平臺的"程序設計基礎"課程實驗教學改革[J].實驗室研究與探索,2016,35(2):191?195+223.
[5]許小東,吳軍強,劉小晶.基于 MOOC 的程序設計開放實驗平臺的構建[ J].實驗室研究與探索,2017,36(4):157?160.
[6]廖雪花,厲蘭潔,唐思娩.基于 Online Judge 的 C 語言程序設計實驗課教學改革研究[J].計算機教育,2016(6):130?132.
作者簡介:
郭旺(1990—),碩士,實驗師,研究方向:軟件工程、軟件測試。