林忠
(南京工程學院計算機工程學院,南京 211167)
程序設計類課程是眾多工科專業不可或缺的基礎課程,占有重要地位,如C語言程序設計、Java程序設計等。除此之外還有眾多課程需要通過有效的程序設計實驗教學環節才能幫助學生深入理解和掌握,如數據結構、數據庫原理、操作系統、圖形學、數字圖像處理等。程序設計類課程的教學效果對學生的程序設計能力的培養,及之后學生在相關專業的就業有決定性的作用。
傳統課堂以教師為中心的教學方式不利于激發學生的學習興趣。在“互聯網+教育”的新形勢下,出現了一些新模式(如MOOC模式[1-2]、翻轉課堂教學模式[3-4]等)和新的教學工具與平臺(如Moodle教學平臺[5]、雨課堂[6]等)。雨課堂是一款支持移動互聯網的教學工具,可以運行在微信客戶端中。隨著當前智能手機的普及,使用雨課堂在手機中完成學習任務比在計算機中登錄網頁進行的學習更加便捷。
除了雨課堂以外,針對程序設計類課程的程序編程實踐的需求,可以在教學過程中結合OJ系統(Online Judge)。OJ系統是一個在線的評判系統。用戶可以在線提交程序源代碼,系統自動對源代碼進行編譯和執行,并通過預先設計的測試數據來檢驗程序源代碼的正確性,無須人工判題,現在逐漸被引入到程序設計類課程中,作為題庫或編程訓練的一種工具或平臺[7]。
傳統的程序設計類課程教學主要在課堂內完成,以教師講授、操作示范、學生練習、教師輔導為主要形式。該形式有以下缺點:
(1)需要較多的課時保障才能有較好的教學效果
學生的軟件編程基礎差異性較大,完成知識內化所需要的時間參差不齊。在固定的教學課時內總有部分學生課時緊張,此時必然出現抄襲代碼、不注重代碼質量、只滿足程序調試結果正確而不求甚解等各種不良現象。
(2)教師工作量巨大
(3)需要大量資金投入
軟件編程類課程一般需要每人一臺計算機及相應軟件,需要建設大量實驗機房,以滿足不同課程同時開展實驗教學的需要。機房的建設和維護需要很大資金投入。
(4)對學生的專注度要求較高
在教師講解過程中學生注意力需要高度集中,緊緊跟隨教師的講解步驟,很容易跟不上教師的講解節奏。
使用雨課堂,教師可以將帶有視頻、習題的課前預習資料或者課后復習資料推送到學生手機上。雨課堂也可以實施在線授課,可以進行實時答疑、彈幕互動。雨課堂還提供完整立體的數據支持,如個性化報表、自動任務提醒,讓教與學更加明了。使用OJ系統,教師可以將程序設計任務設計成題庫發布到OJ系統中,學生通過OJ系統提交源代碼,及時得到程序設計正確與否的反饋信息。
將雨課堂和OJ系統結合,構建了一種混合式的教學模式,將傳統的以教師為中心的教學模式轉變為以學生為中心的教學模式,該教學模式設計如圖1所示。

圖1 基于雨課堂和OJ系統的教學模式設計
(1)平臺建設
在這個教學模式中,起教學支撐作用的是雨課堂平臺和OJ系統。
王震舊居前有一條很寬的走廊,夏天他喜歡叫我去那兒聊天,這也許和我的見識有關。比如,他說了一個喝咖啡的故事。長征途中王稼祥想喝咖啡,哪兒找呢?傅連暲就敲破幾支咖啡因沖水給他喝。王老說完這個故事仰天大笑,只有我跟著他笑起來,其他人不知道咖啡和咖啡因是什么。王部長到過蘇聯,說奶酪是炊司(俄語),別人不懂我懂。
首先下載安裝雨課堂平臺軟件,雨課堂課件編輯端是以PPT的插件形式存在的,而且必須確保計算機上已經安裝有Microsoft Office 2010或以上版本。然后在微信客戶端關注“雨課堂”公眾號,填寫個人信息后,進入該公眾號后就可以設置課程和班級。教師在PC端點擊雨課堂菜單,用微信掃一掃登錄后就可以進行雨課堂授課或者新建試卷或者新建手機課件并上傳,除此之外還可以發布公告,如圖2所示。學生在微信客戶端中關注“雨課堂”公眾號后,輸入邀請碼就可以加入到課程中。利用該平臺學生可以做試題、觀看教師發布的課件、查收公告信息也可以將學習中的問題反饋給教師,如圖3所示。

圖2 雨課堂界面

圖3 雨課堂作業反饋

圖4 雨課堂作業反饋詳細信息
目前國內有很多高校搭建了OJ系統,如北京大學、浙江大學、杭州電子科技大學、哈爾濱工業大學、華中科技大學、南京航空航天大學等。要獨立開發一個OJ系統有一定難度,可以利用一些開源OJ搭建學校的OJ平臺。目前開源的OJ系統有:HUSTOJ(華中科技大學 OJ)、UOJ(Universal Online Judge)、VIJOS(Velocious Informatics Judge Online System)、PowerOJ(西南科技大學OJ)等。除此以外還有開源的Online Judge plugin for Moodle 2.x,這是哈爾濱工業大學開發的基于Moodle 2的插件。任選其中一個開源OJ可以搭建高校自己的OJ系統。
(2)課程建設
首先制定教學大綱,設立教學目標,將知識點細化;然后分析哪些知識點是重點,哪些是可能的難點。最后根據分析的知識難點和重點,制作有針對性地供線上或者線下教學活動使用的課件、微課視頻和題庫。當課程開展教學活動后,根據線下教學活動的學生反饋信息及學習數據分析,及時修正知識點的難點并有針對性的修改或者補充課件、視頻及試題。
(3)線下教學活動
教師根據課程教學目標,并在課件、視頻、試題庫的支持下可以通過雨課堂平臺和OJ平臺開展豐富的線下教學活動。教師通過雨課堂平臺發布課件、網絡視頻或者慕課視頻、作業、測試,可以通過OJ平臺布置程序練習題,其中的作業、測試可以設置截至時間,借此督促學生及時完成作業。學生可以根據個人具體情況合理安排線下學習的時間,也可以在平臺中反饋課件中的不懂的頁面,或者直接反饋文字信息給教師表達學習中遇到的問題。學生的作業還可以通過語音或者圖片的方式提交,給學生提供了極大便利。通過這種新式線下教學活動,教師與學生可以及時互動,教師也可以收集學生實際學習數據,進而分析學習難點和評估學習效果,從而為修訂教學資源和線上教學活動的展開提供依據。
(4)線上教學活動
線上教學活動在課堂內開展,教師根據教學大綱講授知識點。通過線下教學活動的反饋,教師著重對學生反饋不理解的知識點和學生線下作業或測試錯誤較多的知識點進行講授并現場組織學生討論答疑。同時可以布置一定的課堂作業,鞏固學習效果。
在基于雨課堂和OJ系統的教學實踐中,發現雨課堂平臺和OJ系統也存在以下一些不足之處,主要包括:
(1)教師自制的視頻資源不能在雨課堂平臺中直接發布,只能通過發布到第三方視頻網站或者存放到云盤供學生觀看或者下載后觀看,學生對于這些視頻資源的學習情況無法有效反饋。
(2)發起交互的單向性。雨課堂系統中學生可以主動向教師發送反饋信息,教師根據可以回復該信息,但是教師無法主動向某個學生發送信息。
(3)雨課堂系統中學生無法訂正主觀題題目。教師批改主觀題時,可以指出學生的錯誤之處,然后學生希望能夠再次提交訂正后的作業,但是目前雨課堂不能提供此功能。
(4)OJ系統和雨課堂平臺之間無法整合成一個平臺,使用上稍微有點繁瑣。
實踐中發現的這些不足之處希望不久的將來可以通過雨課堂平臺和OJ系統的不斷完善得到彌補。
本文給出了基于雨課堂和OJ系統的程序設計類課程的教學方法,并在初步實踐過程中發現了該教學方法的一些不足之處,為未來平臺改進提供了一些建議。雖然平臺目前還存在一些不足,但是該教學模式創建了學習過程中的及時反饋機制,對于提高學生學習積極性和提高教師教學的針對性等具有很好的效果,解決了在傳統教學中的存在的這些問題,具有很好的實際意義。