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