朱雪梅,李瑋璇
(廣東女子職業技術學院,廣東 廣州 510000)
目前,程序設計類課程根據線上騰訊課堂等教學經驗[1]會出現老師講解、學生操作難以同步解答的現象。傳統教學常態是師生在實訓課室,教師講授理論并且操作演示,學生在實訓平臺操作練習,教師通過巡堂解答學生的疑難問題。由于多種因素影響,許多地區需要進行線上教學,教師和學生不能同空間溝通,導致教師輔導難,教學難點不能得以解決。因而,云實訓平臺應運而生[2],但是根據調研發現[3],目前市面上能輔助程序設計類課程教師的云實訓平臺都是需要定制開發,靈活性較差,教師不能針對課堂的學情動態化調整實訓內容,更新重難點實訓內容,不能對學生實訓數據進行分析等。由此,為了實現線上教學學生不受限于時間空間,隨時進行云端程序設計實訓,并且得到智能化測評,教師能夠隨時根據學情靈活調整線上實訓平臺內容,能夠對學生實訓數據進行精準分析的目標,本研究研發了“程序設計課程云智能實訓系統”,著重從系統功能、系統設計等方面進行闡述。
程序設計云智能實訓系統的目標是設計一個基于云端的程序設計虛擬實驗室,該系統不限時間、空間和終端的限制,學生通過瀏覽器打開網址即可進行實訓,該系統能對編程實驗操作進行智能評價,并實時反饋評價結果;能后臺監控所有實訓數據,通過大數據挖掘,對學生實驗數據進行分析,從而輔助教師調整教學。該系統從理論、方法、技術和系統實現具有一定的普適性,能夠推廣和應用到其他課程和領域。
程序設計云智能實訓系統主要包括實驗智能測評、學習數據分析和互動學習3 個功能模塊。其中,實驗智能測評和學習數據分析是系統的核心功能模塊。
該模塊根據功能需求包含實訓題庫、實驗操作、實驗智能化測評3 個子模塊。實訓題庫模塊是教師根據教學計劃和重難點設計一些實訓題目的學習資源題庫,教師可以靈活設置,根據每個班級不同學情靈活更新和調整題庫內容,也可以根據學生實訓情況增加某類知識點的強化訓練;實驗操作是學生登錄網站,根據學習計劃以及自身能力選擇不同知識點對應的題目進行編制程序代碼,如有困難可以查詢提示,完成后提交源程序;實驗智能化測評是系統對學生提交的源程序檢測評價,如果正確,反饋答對信息,并給予鼓勵;如果出錯則反饋運行錯誤信息, 并提示出錯的地方,引導學生排查錯誤,實現智能化評價。
該模塊根據功能需求包含實訓題庫管理、學生數據記錄、學生答題排名和學習數據分析4 個子模塊。用戶排名模塊是根據學生學習數據情況,在每個班級下按照得分高低進行排名,也可以針對某道題查看最快答題的同學;實訓題庫管理是教師可以靈活新增、刪減和設置題庫內容,并且對題庫的使用賬戶信息和權限進行管理;學生數據記錄是對學生在題庫里操作情況進行記錄,答對情況、答錯次數等;學習數據分析是該系統的核心,可以實時分析學生學習的數據,不僅答題情況的分析,還有所有學生操作記錄的分析,如選擇題目集中哪類知識點,某道題答錯次數,獲取提示的題目等,形成學生個人學習數據庫和班級學情數據庫,從而輔助教師調整教學策略。
該模塊根據功能需求包含在線答疑、討論協作和常見問題3 個子模塊。在線答疑是教師設置了問題交流窗口,學生遇到問題可以在線和教師進行溝通交流討論;討論協作模塊是為小組討論設置的,小組成員可以在線上實行任務分配,對工作任務遇到問題時可以進行溝通協作;常見問題模塊是后臺根據以往教學遇到的系統使用和題庫問題進行了整理,用戶直接可以查看解決大眾問題,提高問題解決的效率。
系統前端使用業界流行的vue 框架開發,后端使用node 框架開發Web 服務器。底層使用selenium/phanthomjs/chrome 等瀏覽器框架技術運行上機代碼,實現核心功能[4]。系統運行流程見圖2。

圖2 系統運行流程示意
程序設計課程云智能實訓系統采用B/S 模式開發,運用了3 層服務體系,分別是表示層、業務邏輯層以及數據訪問層,見圖1。表示層,系統通過Web 瀏覽器將業務邏輯層的數據按一定格式和界面呈現給用戶,并與用戶進行交互。業務邏輯層,相當于系統的Web 服務器,將表示層傳遞過來的用戶請求,進行解析、分拆、重組,形成數據訪問需求,傳遞給數據訪問層。同時,對來自數據訪問層的數據進行梳理、匯合。數據訪問層,采用MySQL 網絡開源數據庫作為數據存儲數據庫,主要負責將業務邏輯層傳遞過來的數據請求,通過網絡的方式從數據文件中進行檢索,并返回數據結查。數據訪問層主要起到存儲數據、數據查詢、數據安全和數據分流的重要作用,數據庫的建立能更好的實現數據的統一性、完整性和持久化。

圖1 系統結構
學生激活程序設計云智能實訓系統,進行選題寫代碼,瀏覽器前端把上機代碼通過axios 異步技術發送到服務器端,服務器端收到瀏覽器請求后,使用瀏覽器模擬器運行用戶編寫的上機代碼,根據代碼運行的輸出及產生的作用,綜合從數據庫中加載的測試及結果數據,進行人工智能評價。結果以json 接口的形式封裝返回給瀏覽器;另一邊老師也可以通過管理員端口查詢到分析結果,隨時了解學生的學習情況。此外,系統還設計了問題提示功能,學生碰到困難點可以通過分值來換取提示,服務器會向數據庫發送請求查詢學生是否有足夠的分值,如果有提示以json 接口的形式封裝返回給瀏覽器,反則會提示無法獲取。
系統前端通過vue、element-ui 框架實現,學生在對瀏覽器進行操作時,瀏覽器將請求通過json 封裝把數據發送至業務服務層,業務服務層通過數據存取層得到后端數據源的數據支持[5]。軟件模型圖見圖3。

圖3 系統軟件模型
3.4.1 服務端系統功能
a.身份判斷。用戶在系統登錄的時候,后臺會通過MySQL 數據庫存儲的數據判斷用戶是學生(s)還是管理員(a),完成后將結果返回給瀏覽器。b.智能評價。學生在系統提交題目代碼后,服務器會使用PhantomJS瀏覽器模擬器運行學生編寫的上機代碼,根據代碼運行的輸出及產生的作用,綜合從MySQL 數據庫中加載的測試數據,結果以json 接口的形式封裝返回給瀏覽器。c.用戶注冊。學生通過Web 瀏覽器填寫個人信息,如姓名、學號、專業班級以及登錄密碼,完成后將數據交給MySQL 數據庫保存管理。d.修改個人信息。
3.4.2 網頁端的主要功能
a.用戶注冊登錄系統。b.瀏覽練習題目,預覽知識點。c.查看做題記錄,通過之前的記錄了解自己的做題思路。d.通過查看自己在班級的排名,激發學生的競爭心理。e.了解自己的學習情況,系統統計分析近期學習數據。f.修改個人信息。
3.5.1 數據加密技術提高安全性
由于JavaScript 程序設計云智能實訓系統需要在學生登錄后才能使用,如學生上機途中離開別人可以通過操作后臺截取登錄密碼。所以對于網頁來說數據加密的工作是非常重要的,它能有效防范他人竊取信息和使用。云智能實訓系統主要采用MD5 進行數據加密處理,當學生要進入系統點擊登錄時,服務器接收到數據后對登錄密碼進行加密處理后再跟存放在數據庫里的數據做對比,如果數據相同則證明密碼正確。
3.5.2 實驗結果智能評價技術
應用前端自動化測試技術,利用黑盒測試原理,對學生上機編程結果進行量化,對程序結果進行智能評價和實時反饋,提高學生的上機實驗效率。
我們在系統使用瀏覽器模擬器開發了人工智能評價系統。智能評價關鍵代碼如下:


如果學生實訓操作題沒有運行錯誤,并且輸出結果與標準結果匹配一致,則反饋正確,否則反饋結果錯誤,見圖4。

圖4 智能評價界面
本研究針對程序設計類課程線上實訓教學輔導效率低的弊端,開發設計了“程序設計課程云智能實訓系統”,該實訓平臺系統不限時間、空間和終端的受限,網頁端即可進行實訓并得到智能化輔導。該系統能夠推廣到編程類的各個專業課程,普適性較高,有效解決目前線上實訓教學的困難。