于露

摘要:對于編程(程序設計、算法學習)類課程的教學,訓練是一個非常重要的環節。基于此,借鑒一些在線測評平臺,根據學生的學情和特點,開發了Online Judge平臺,旨在打造一個集教、學、練、賽于一體的交互式學習社區:師生提供內容,組建教學共同體;學生“闖關”,激發自主學習力;系統及時反饋,強化過程性評價;學生同場競技,提升實戰能力。在實際使用中感到,還應該對OJ平臺進行優化提升:廣泛搜集高質量題目,進一步擴充題庫;結合實際使用情況,解決新問題,滿足新需求。
關鍵詞:在線評測平臺中學編程教學闖關比賽
目前,國內不少省份信息技術課程的教材都發生了一些改動,提高了程序設計以及算法內容的比重。Python是一種計算機程序設計語言,它具有簡潔性、易讀性以及可擴展性等特點。2017年,我校針對初二年級,設置了Python校本課程,并開發了相應的教材。在實踐過程中,我們發現,對于編程(程序設計、算法學習)類課程的教學,訓練是一個非常重要的環節——學生在實際編寫代碼的過程中,可以深化對知識點的理解,同時提高計算機能力,提升計算思維。基于此,我校借鑒了一些在線評測平臺,根據學生的學情和特點,開發了Online Judge(以下簡稱“OJ”)平臺,旨在打造一個集教、學、練、賽于一體的交互式學習社區。
一、教——師生提供內容,組建教學共同體
在OJ平臺上,教師并不是唯一的課程提供方——教師在平臺建設初期完成課程體系的構建以及基礎性內容的填充,學生在使用過程中不斷地豐富著教學內容。
以“Python基礎入門”內容為例,我校開發的教材包含“輸入、輸出”“算術運算和賦值語句”“關系、邏輯運算與選擇語句”“for循環語句”“while循環語句”“列表list”“dict字典”“自定義函數”8個章節,基本可滿足學生一個學期信息技術課程的學習需求。每個章節包含知識點、例題和作業3個部分:知識點的講解采用文本與視頻相結合的方式,將每一節的知識點以文本形式呈現,同時將文本內容的講解錄像保存,方便學生反復觀看學習;例題的講解與分析同樣錄像保存;作業部分采用在線評測與反饋的形式。OJ平臺支持矢量技術錄屏,視頻錄制效果清晰,體積小、上傳快,瀏覽時不卡頓。
我們會邀請一些在信息技術學科上有興趣和能力(如參與過信息學競賽)的學生幫助擴充題庫,并在解題過程中完成題目類型標簽的添加。學生若想練習某一類型的題目,則可在題庫中搜索相應標簽找到題目(如圖1)。
學生人數眾多、思路各異,在解題過程中會呈現出不同的方法,因此,我們開放了學生上傳解題過程的功能,讓學生可以像老師講解例題一樣給同學講解習題的編程思路。在實踐過程中我們發現,學生非常樂意錄制題解視頻,讓更多的用戶看到自己的思路,這對于他們而言是一種榮譽,更是一種激勵。
另外,每道題目下方的討論區可以實現學生與教師、學生與學生之間的互動交流。教師無法實時解答的問題,很多時候都可以通過學生之間的交流得到解決。
二、學——學生“闖關”,激發自主學習力
OJ平臺設置了關卡模塊(功能的設計參考了“洛谷”平臺),供學有余力的學生自學使用。關卡分為入門、普及、提高、省選、全國賽、USACO六個層次水平,每個層次水平根據所需知識點細分為更多的關卡。
以“Python基礎入門”為例,OJ平臺設置了“順序結構”“選擇分支結構”“循環”“數組”等十個關卡。每個關卡題目數量不等,通過總題數的80%即可通關;有的關卡需要通過之前的關卡方可解鎖。根據上述規則,學生可以像玩闖關游戲一樣,不斷地在“升級打怪”中完成難度遞增的題目,即進行闖關式學習。
實踐證明,闖關式學習能更大程度地激發學生的學習動力。首先,對于Python課程的學習,學生之間的差異較大,若采用完全相同的教學內容,會出現一部分學生接受困難而另一部分學生覺得過于簡單的狀況。因此,自定步調的學習路徑——闖關式學習應“需”而生,實現了學習進程的自由化。需要說明的是,這種“自定步調”并沒有脫離學生的學習規律,關卡的設置其實已經幫助學生規劃好了知識點學習順序——高階算法的學習必須以掌握基礎算法為基礎,從而保證學生在逐步提升水平的同時扎實地掌握每一個知識點。其次,闖關式學習借鑒了游戲的設計原理:在成功突破某個關卡之后會獲得相應的卡片獎勵,增加等級排名提升、勛章累積等游戲元素等。所有在OJ平臺上學習的學生構成了一個群體,每一個個體都渴望在這個群體中獲得更高的分數與排名,這使得學習變成了學生積極主動地去完成的事情。
三、練——系統及時反饋,強化過程性評價
OJ平臺采用黑盒測試法對學生提交的解題情況進行大數據評測,一道題的評測大概在2秒內就可完成,幾乎不會出現卡頓的情況。另外,對于同一道題,學生可反復提交、反復評測,以得到最優的結果。
OJ平臺記錄了每一位學生每一次作業、考試每一道題的做題情況,為實現過程性評價提供了可能。從課程評分的角度來說,根據學生一個學期的做題情況給出的分數一定比根據學生一次考試的做題情況給出的分數更加全面、更加具有說服力,對學生的學習有很好的引導作用。同時,教師可對學生練習情況的數據進行分析,結合學生最終的編程水平,設計貼合學生學情的測試卷。
從課程改進的角度來說,深入分析學生的學習路徑,可以幫助教師分析總結編程類課程學生能力水平的變化情況,知曉學生可能存在的難點與瓶頸,從而進一步調整教學設計以及授課的重難點。
四、賽——學生同場競技,提升實戰能力
中學階段對于學生編程水平的界定多以比賽的方式進行。國內外各大在線評測平臺均有類似于比賽的功能,用戶在一些平臺(如Codeforces)上的排名已經成為一些高校或者公司錄取時參考的信息。因此,我校在開發設計OJ平臺時,特別增設了“在線比賽”功能模塊。
“在線比賽”功能專門用于Python課程的考核與信息學競賽的訓練,分為OI和ACM兩種賽制類型——OI賽制在比賽期間不能看到比賽結果,在比賽結束后方可看到每個人的分數及排名;ACM賽制可以多次提交解題過程,在比賽過程中可以看到自己及他人的解題情況及排名。
“在線比賽”不需要參賽者在同一地點,只需要參賽者在同一時間登陸平臺。學生在平臺上同場競技,不僅可以了解自己的實戰水平,而且可以結識很多志同道合的同學和各路高手。實踐證明,“在線比賽”不僅能提升學生的編程能力,而且能提升學生的交際能力。
五、結語:進一步完善的方向
實踐證明,OJ平臺實現了時空無邊界、進程無邊界、角色無邊界和資源無邊界的教學效果。然而,OJ平臺的開發不是一蹴而就的事情,而是一個不斷完善的過程。為了更好地促進平臺發揮教、學、練、賽的功能,打造一個完善的Python交互式學習社區,我們還應該從以下兩方面對OJ平臺進行優化提升。
(一)廣泛搜集高質量題目,進一步擴充題庫
題庫是在線評測平臺的靈魂所在。目前,我校OJ平臺上大約有2000道題目,相較于受眾廣泛的知名在線評測平臺,題量還遠遠不夠。而與其他學科不同的是,搜集編程類題目不僅僅要搜集題面,測試數據也必不可少,這也是搜集的一個難點所在。下一階段,我們將從各個渠道搜集更多高質量的題目,以擴充題庫。
(二)結合實際使用情況,解決新問題,滿足新需求
OJ平臺上線運行后,隨著使用學生人數的增多,更多的問題與需求涌現出來。比如有學生在評論區惡意灌水,給網站管理帶來了不便;比賽中途會有人加入,需要新增這一功能;不同瀏覽器頁面顯示不同,需要調整這一問題……相信在后期使用過程中,仍會出現各種各樣的問題和需求,我們將與網站開發者保持聯系,及時解決新問題,滿足新需求。
參考文獻:
[1] 史釙鐳.利用在線評測平臺,助推人工智能教育[J].教育研究與評論(中學教育教學),2018(4).