田豐 佳木斯市第一中學
高中信息技術課在新修訂的《普通高中信息技術課程標準(2017 年版)》中,課程結構和課程教學內容都進行了較大的調整修改,在新課程中的《數據與計算》、《數據與數據結構》、《算法初步》等模塊都涉及到程序設計,尤其是《算法初步》模塊,將對程序語言、算法設計進行較為深入的學習與研究。
程序設計類課程與基礎理論類課程不同,其實踐性很強,注重學生實際編程能力的培養。
但從目前高中程序設計課程的開設情況來看,程序設計教學還存在著一些問題:
(1)評價方式欠科學,缺乏嚴謹的檢查機制。學生編寫完程序后,難以及時、準確的驗證程序的正確性,從而不能及時發現程序中存在的問題,長此以往不利于學生程序設計能力的培養。
(2)教師課堂監督能力有限。教師無法及時了解每名學生課堂上任務的完成情況,沒有時間和精力對學生提交的作業一一進行上機驗證,只能通過抽檢的方式檢查,無法全面和客觀評價學生的學習情況,不利于學生動手操作能力和創新能力的培養。
(3)教師工作量大。每位高中信息技術教師大概要教300 名左右的學生,程序代碼作業批改費時又費力,這極大地耗費了教師的精力,教師投入到教學研究的時間就相對較少。
程序在線評測系統(Online Judge,簡稱OJ),是一種基于 B/S 架構的在線程序檢測平臺。此評測系統能對學生用網頁瀏覽器提交到服務器的程序源代碼進行在線編譯,生成可執行文件,并從數據庫中調用測試數據,從程序運行的正確性、耗時、耗費內存及返回結果等各方面評測代碼,并精確返回各方面的評測結果,學生可根據反饋結果判斷程序是否正確或根據錯誤的原因進行修改。
將程序在線評測系統引入到高中信息技術的編程教學中,以輔助信息教師進行教學,目的就是要改進傳統的人工驗證程序的方法,建立科學、高效的評價環境,能實時的、準確的驗證程序的正確性,從而提高課堂教學效率,促進學生程序設計能力的提升。
經搜集、學習大量資料,筆者學在校內服務器上安裝了unbtun 操作系統,在unbtun 操作系統上安裝了UOJ 在線評測系統,經反復調試、更改,uoj 在線評測系統已能在校內使用,在實踐過程中應用了以下功能。
學生打開提交頁面,然后選擇“語言”,便可提交評測。這里我們添加了包括pyton3 在內的7 種程序語言,評測結果可顯示程序運行答案是否正確、程序運行的時間、程序運行的空間、編譯錯誤、運行時錯誤等信息。學生可根據評測結果來改正程序。在此功能的測試中,我發現測評功能不忽略行末空格,明明答案正確,但由于行末多了一個空格顯示答案錯誤,這給初學編程的學生帶來很大的麻煩(有些問題去掉行末空格是很不好處理的),經過深入研究修改測評代碼,最終實現了忽略行末空格的評測方式。
學生打開“提交記錄”頁面,輸入用戶名,點擊“搜索”即可查詢自己以前所有的提交記錄,也可以輸入用戶名和題目編號查詢某一道題目的做題記錄。
做題記錄可以顯示學生每一次提交的題目編號、提交時間、分數、用時、內存、代碼等程序的相關信息。給學生的復習、自主學習帶來了極大的方便。同時教師可以通過查詢某個同學的做題記錄,了解學生的學習情況。
管理員可以在后臺添加比賽題目,設置比賽。設置完成后,學生在前臺頁面報名后即可參加比賽,比賽結束后管理員點擊”評測比賽”,系統會評測所有參加比賽選手的程序,評測結束后顯示分數與排名,這項功能對于教師檢測學生的學習情況非常方便。同時也可作為教師課堂上布置任務使用,教師在后臺可以實時觀測到每個同學任務的完成情況,可以有針對性的輔導。
后臺管理現已完成添加編輯題目(題目中可以含有圖片)、上傳題目測試數據、刪除用戶、設置用戶權限等功能。為了保證評測系統的安全和方便管理,我們還設置了開關功能,對于注冊、評論等功能可在后臺進行開啟和關閉。
從2019 年3月開始,我選取一個班級進行python 程序設計教學,教學過程中將“在線評測系統”作為教學的輔助工具,收到了良好的效果,相對以往,學生課堂狀態和學習效率有了一定的改善,主要體現在以下幾個方面。
之前有些學生對于單純的學習程序語言感覺枯燥乏味,沒有成就感。使用“在線評測系統”時學生每完成一道題目就會得到一百分,完成題目數量就增加一個,個人排名就可能上升,學生都很在意自己的排名,想要排名上升,就得多完成任務,這樣班級內就形成你追我趕的學習氛圍,大大增加了學生的學習欲望。
以往學生編寫完程序后,自行驗證程序的正確性。由于初學程序設計和個人思維習慣的不同,很多學生自以為正確的程序其實存在著邏輯錯誤,而課堂上老師精力有限,不可能照顧到所有學生。在線評測系統可以輔助學生檢查程序的嚴謹程度,每一道問題教師都設計了全面嚴謹的測試數據,基本可以檢測出程序的各種邏輯錯誤,學生評測后可及時發現錯誤,及時改正,以免下一個任務犯相同的錯誤,慢慢學生也越來越意識到編程過程中應用注意到哪些問題,編程的正確性和邏輯思維能力得到一定的提高。
使用評測系統后學生可清晰的看到程序運行的時間和占用的內存,不同算法運行的時間空間可能有著明顯的不同,這在以前學生是無法體會到的。課堂上學生看到程序的運行效率后,也嘗試著去優化程序,重新設計算法,這個過程可以加深學生對算法的理解,也鍛煉了學生的計算思維。
使用在線評測系統后,學生對于遺忘的內容查可查看做題記錄,課堂上問老師問題的學生減少了,課堂上老師查看學生的做題記錄很容易發現學生的問題,指導更有針對性。同時在線評測系統可以自動評測,教師批改作業也省時省力,更多的精力可以查看學生錯誤原因,教學設計更有針對性。
經過一學期的使用,在本學期初對實驗班級進行了問卷調查,結果如下:
(1)有94%的學生認為使用“在線評測系統”能夠提升編程的興趣。
(2)有86%的學生認為“在線評測系統”能及時反饋程序的正確性
(3)有72%的學生認為“在線評測系統”可查看程序運行時間和空間,了解算法優劣
(4)有94%的學生認為“在線評測系統”可查看做題記錄,方便復習
(5)有34%的學生經常關注“在線評測系統”的排行功能,有58%的學生偶爾關注。
(6)有74%的學生認為使用“在線評測系統”進行程序評測是否更容易發現程序的邏輯錯誤
(7)有92%的學生認為使用“在線評測系統”進行程序評測能否提高思維的嚴謹性教學實踐過程使用中“在線評測系統”受到了學生的認可,對教學起到了積極的輔助作用,但筆者認為,在學生編程熟練后,不易過度依賴評測系統來檢驗程序的漏洞,這對于培養學生的思維嚴謹性是不利的,應更多地將其作為評判工具,恰當合理的應用。