萬 海,吳 迪,劉思然,陸 勇,吳維剛,江 穎,吳嵐嵐,李 湄
(中山大學 計算機學院,廣東 廣州 510006)
目前我國已有550 多所高校開設了計算機專業,選修計算機專業的高校學生更是多達上百萬。然而,各高校計算機教學質量良莠不齊,教育資源配備不充分、不完善,使學生無法得到充足的實例練習。學校未將足夠的教學資源向計算機專業傾斜,因此缺乏便捷、有效的工具輔助智能化教學工作的開展。
中山大學計算機學院團隊致力于為計算機相關專業的學生搭建集學習、練習、實驗于一體的一站式程序在線自動評測平臺Matrix(以下簡稱Matrix 平臺),提供優質、穩定、可靠的計算機類人才培養服務,營造良好的計算機教育生態。喬海燕等[1]基于Matrix 平臺提出在線評測代碼提交接受率的三步法。國內已有一些高校提出使用在線評測系統輔助計算機類課程教學,主要分為以下四類:①文獻[2-5]將信息學奧林匹克競賽或ACM 競賽所采用的在線評測系統應用于計算機類課程教學:王國英等[2]提出類似于ACM 競賽,以學生在評測系統的提交次數和提交正確率等指標檢查學生的學習效果;任長安等[4]介紹了湖南工學院的ACM 評測系統在輔助程序設計類課程上的實現;②以課程訓練為主的教學類在線評測系統。馮麗露等[6]設計了一個用于數據結構課程的在線系統,該系統內設添加題目、查看答題記錄、導出成績等課程輔助功能;張美娟等[7]則結合所在學校的具體情況設計了一套提升學生編程能力的在線評測系統WITOJ;③介紹面向競賽或基于慕課平臺應用的在線評測系統[8-12]。張雨薇等[8]通過對ACM 在線評測系統進行改良和優化,實現了系統在競賽與教學方面的一體化;夏敏捷等[9]則將慕課平臺和在線評測系統相結合建立教學評價體系和學習成績考核機制;④應用于聯合機考和面試的研究生招生復試與考評系統。蘇小紅等[13]提出采用聯合機試和面試的方法應用于研究生招生復試中,通過合理分配機試和面試分數的比例,建立研究生招生復試的選拔和考評體系。經過實踐研究表明,通過在線評測系統的課程智能化實踐具有重要意義[14-15]。
目前尚缺乏將課程教學和機考相聯合的在線評測系統,且現有教學類的在線評測系統中多為編程類題目,類型過于單一。Matrix 平臺始創于2015 年,目前已經穩定地為中山大學計算機學院提供課程和考試系統相關服務。面對突如其來的新冠肺炎疫情,利用互聯網保障教師在線教學及學生在線學習,便成為了新的教學挑戰[16]。通過Matrix 平臺探索在疫情下保障程序設計類遠程教學和本科生、研究生遠程機考的經驗,為教學與考試的有序進行提供了有力的保障。
具體而言,Matrix 平臺在遠程教學與機考實踐中具有以下創新點:①適用于C、C++、Python、數據結構等計算機類課程的實驗教學,涵蓋課程作業、課程成員、課程討論等模塊,支持包括編程題、文件上傳題、選擇題、簡答題、報告題在內的五種題型,同時支持在線評測、抄襲檢查、數據統計、批量導出等教學功能。②集成了遠程機考功能,使得在疫情的影響下,仍能保障程序設計類課程的遠程教學和本科生、研究生的遠程機考。
經過近6 年的建設,Matrix 平臺相繼開發了課程、考試、競賽系統等項目,為保證計算機學院程序設計課程教學與考試的穩定進行,提供了多項重要業務的技術與環境支持。如程序設計課程日常教學、階段性考試、轉專業機考、研究生機考等。截至2021 年5 月,系統已提供240 余個課程的管理服務并承擔了170 余場考試,成功應用于C、C++、Python、數據結構等課程的教學中。其中,涵蓋課程作業、課程成員、課程討論等模塊,支持包括編程題、文件上傳題、選擇題、簡答題、報告題在內的5 種題型從出題到做題、做題到改題的所有基本功能;支持C、C++在線評測、抄襲檢查、數據統計及批量導出;支持在線編程考試和在線理論考試,并可選擇實時評測或定時評測。
Matrix 平臺為教師提供課程管理、課程資源發布、作業發布等功能,對學生作業進行科學、高效、自動化的評測,極大減輕了教師的勞動強度。同時,平臺會自動保存學生提交的程序和評測結果,以便于后期查詢成績、排名和統計數據。系統目前支持編程題、報告題、文件上傳題、選擇題、簡答題等多種常見題目類型,允許在題目中添加公式、圖片等素材,使題庫更加靈活豐富。同時支持抄襲檢查、數據統計及批量導出功能,為作業的管理提供高效、便捷的服務。平臺支持理論題、編程題等多種題型,實現了對學生編程水平的考察,為高校組織考試、競賽提供了技術支撐,可按需求選擇定時或實時評測。平臺實現了程序評判過程的全自動化和測試結果的標準化,將來會向智能化分析學生數據方面迭代。
學生端如圖1 所示(彩圖掃OSID 碼可見,下同):學生可查看課程列表、自定義搜索課程、查詢課程進程。通過點擊單個題目,進入做題頁面,頁面左側包含題目的具體描述,主要包括查看提交記錄、成績報告、排名情況、標準答案等功能。右側為學生的答題區域。

Fig.1 Student-side course list and online programming interface圖1 學生端課程列表與在線答題頁面
教師端如圖2 所示:教師通過圖形化頁面方便快捷的對后臺題庫進行管理,支持一鍵導入題目、一鍵修改發布、一鍵查重、一鍵學員管理等功能。

Fig.2 Teacher-side course management圖2 教師端課程管理界面
Matrix 平臺提供了考試系統,教師端支持一鍵導入考試題目,一鍵管理考試時間,一鍵統籌考試學習,自動計算學生的分數和排名。在學生端統一配置編程環境,全自動實施評測和代碼查重。考試系統支持大規模、高并發的程序設計類上機考試。目前,已承擔170 余次考試,包括程序設計期末考試、轉專業機考、研究生復試等。
如圖3 所示,除課程系統和考試系統功能外,基于Matrix 平臺開發的在線評測系統MOJ,內置各類算法、工程題目,支持學生使用C、C++、Python、Haskell 等多種語言進行算法、程序編寫。具體而言,有以下突出優點:
(1)龐大、優質的題庫。截至2021 年6 月,Matrix 平臺題庫中共有2 000+道題目,涵蓋程序設計基礎的全部知識點。將題目難度分為“簡單”、“中等”、“困難”等不同等級,可供各階段編程學習者選擇,并且題目還提供了標準答案,便于學生自查、糾錯。下一步,Matrix 平臺還會不斷添加題目,豐富題庫,優化編程學習體驗。

Fig.3 Online evaluation OJ system -matrix圖3 在線評測OJ 系統
(2)穩定、良好的代碼評測體驗。Matrix 平臺提供自動化、智能化的評測系統,可評測學生提交代碼的效率與正確性等方面,并且評測速度快、效率高、報錯信息詳細。平臺支持編譯檢查、靜態檢查、內存檢查等,提供標準測試和隨機測試兩種方式。同時,平臺將保存代碼和評測結果,以供其他服務(知識點推薦、代碼推薦等)使用或進行后續分析。
(3)個性化測評系統,幫助用戶高效創建專屬題庫。一次考試和作業只能顯示成績的表象,難以分析深層問題。Matrix 平臺將在不斷迭代中推出個性化測評系統,通過平臺現存的前期學員練習試題和考試數據,利用大數據動態分析技術,全面分析學生的考試結果和作業情況,精準、快速地發現學生的學習漏洞,給出具體的知識體系、知識點分析報告。系統還可為用戶定制個性化專屬題集,根據每個學生的知識特點,針對性的匹配相關知識點題型,制定最符合每一位學生實際情況的專屬訓練集。
為激發學生的編程熱情,提高學生的編程能力,促進計算機技術人才成長。平臺與企業達成合作,Matrix 平臺利用OJ 系統定期組織線上編程大賽,學生只需提交程序源代碼便可在服務器上遠程執行,只有在指定時間和內存限制下運行通過并輸出正確結果的程序,則被認定為有效程序。大賽通常會設置獎品、現金獎勵、校招直通車等獎勵。
通過此方式,培養了大量在算法設計領域具有突出表現的優秀人才,中山大學計算機學院在ACM-ICPC 國際程序設計大賽中連續多年獲得多項金牌。獲獎情況如表1所示。

Table 1 Awards of Asian regional competition of ACM International Undergraduate programming competition of Sun Yat sen University from 2015 to 2020表1 2015-2020 年中山大學ACM 國際大學生程序設計競賽亞洲區域賽獲獎情況(由于疫情2020 年部分賽站比賽在整理數據時尚未舉辦)
2020 年初疫情防控期間,為響應“停課不停學”的號召,進一步增強學生的計算機能力。中山大學計算機學院在Matrix 平臺的輔助支持下,面向中山大學計算機學院全體2019級約600多名同學組織開展程序設計在線競賽與輔導。
為了讓同學們盡快適應網絡學習,以賽代練、以練促學,我院成立了由專任教師、《程序設計》任課教師和輔導員組成的競賽輔導團隊。從中山大學計算機學院ACM 集訓隊員和課程助理中選拔多位同學擔任競賽助教,組成競賽輔導團隊,建立面向全體同學的QQ 群運營團隊,利用學院自主開發的Matrix 平臺,有序地開展程序設計在線競賽與直播輔導。
學院ACM 競賽隊在歷年ACM 國際大學生程序設計競賽中都取得了優秀成績,在組織區域賽、新手選拔賽的組織、命題、培訓等環節中積累了豐富的經驗。競賽輔導團隊在每天早上發布具有針對性的競賽試題,參賽同學通過Matrix 平臺進行在線編程與評測,每天晚上由競賽輔導團隊進行在線直播講解。參賽同學的競賽成績將自動積分作為程序設計的平時成績,成績優秀者將被選拔為我院ACM 競賽隊隊員。在疫情防控期間,約有600 多名同學通過Matrix 系統進行遠程教學,取得了良好的學習效果。
如圖4 所示,程序設計線上遠程教學實現了翻轉課堂的教學效果。參訓同學學習熱情高漲,紛紛表示會充分利用這段集中學習的時間向ACM 競賽隊請教,切實提高自己的編程能力。競賽輔導團隊也同步根據同學們的反饋情況,增加新的知識點,拓展原有程序設計的教學深度與廣度,有序開展在線教學與直播輔導工作。
從2016 年至今,中山大學計算機學院基于Matrix 平臺開展了程序設計I、程序設計II、數據結構等核心專業課程和2017-2019 級研究生復試的機考。

Fig.4 During the epidemic,the remote course of program design has achieved remarkable effect圖4 疫情期間《程序設計》遠程教學工作效果顯著
但是,受2020 年新冠肺炎疫情影響,原線下機考的方式受到了新的挑戰:
(1)如何防止考生在機考過程中作弊?
(2)采用騰訊會議等形式進行視頻監考時如何對考生進行引導?
(3)對于大量考生參加的機考,如何保證網絡順暢?
受疫情影響,中山大學計算機學院2021 年轉專業機考(約50 人)和研究生夏令營機考(約600 人)都采用了遠程機考。中山大學計算機學院通過科學分析和梳理遠程機考存在的各種風險,緊張、有序地統籌、部署各項工作。為網絡機考創造公平、公正、公開的選拔環境。
由于部分考生從未參與過遠程機考,為了有序引導考生,緩解考生的焦慮。如圖5 所示,以考生來我院面試為線索作為典型的管道模型,明確考生將接觸的角色。其中包括遠程聯絡助理、侯場秘書、記錄秘書、技術助理、監考員、主考官等。通過為各角色設計工作流程清單、風險自查表,壓實責任。選拔優秀的教師和學生助理參與機考工作,并提前進行崗位培訓和演練。最終,全院共有近100 多名同學、近20 名教師參與研究生機考工作中。

Fig.5 During the epidemic,the remote test monitor is guiding,identifying,and checking according to the pipeline model圖5 疫情期間遠程機考前按管道模型對考生進行引導、核驗身份、測試機位
由于學院復試考生眾多,為了提高工作效率,便于各工作崗位掌握考生信息、對接考生情況、追溯考生與學院聯系的詳細情況,在Matrix 平臺上專門開發了機考輔助系統,用于記錄每個角色崗位對接考生的情況。
2021 年6 月,中山大學計算機學院開設了面向全校學生的轉專業考試。由于中山大學設有三校區五校園,在廣州疫情防控期間,部分考生無法前往指定校區參加轉專業程序設計上機考試,為確保考試的公平性,計算機學院使用Matrix 平臺針對不同專業考生在三個校區開展了線上統一機考。
針對來自各個校區的50 余名考生,計算機學院采取線上主輔雙機位監考+Matrix 統一編譯環境的方式進行監考。具體為:
(1)每位考生考試前在電腦上提前安裝騰訊會議,進入監考人員通知的騰訊會議中,根據監考人員指示調整主機位攝像頭和后側方輔機位攝像頭。如圖6 所示,監考人員通過輔機位查看考生有無同時連接多個屏幕,考試機桌面是否全部清空等前期工作。完成候考檢查后,考生打開騰訊會議,同享全部桌面后準備開始考試。
(2)機考考試開始后,考生遠程登入Matrix 平臺,進入轉專業考試頁面,在Matrix 平臺提供的統一IDE 環境下進行調試、提交代碼等操作,不得切換至其他界面,直到考試結束。
(3)監考員遠程監考。設置1 位監考員負責3~5 名考生的監考工作。監考員時刻監視考生是否離開Matrix 系統、有無與他人通過聊天工具交流等情況,確保考試無作弊情況的發生。

Fig.6 During the epidemic,the remote online program test was monitored by the shared screen and auxiliary computer monitoring using Tencent conference圖6 疫情期間遠程機考通過騰訊會議共享屏幕和輔機位進行監考
Matrix 平臺為全體考生提供了方便快捷的在線編輯器,保證了考試的公平性,并且支持對考生代碼的一鍵查重和成績的一鍵導出。考試過程中,Matrix 平臺實現了程序評判過程的全自動化,為每一位考生提供了自動化、標準化、高速化的穩定服務,得到了全體考生的一致好評。
2021 年7 月,中山大學計算機學院面向全國舉辦優秀大學生夏令營(線上)。為了更好地選拔人才,學院有針對性地組織研究生夏令營機考。
針對全國近600 名考生,學院動員100 多名學生助理和10 多名專任教師在考前對全體考生進行身份核驗、考試流程引導和考試雙機位測試。由于考生人數眾多且不集中,為了防止意外,要求每位考生準備一個備用手機,僅用于接聽監考人員的電話。由于每位考生在遠程監考現場都有一臺計算機作為監考設備,可同時接收考生共享的桌面視頻、主機位攝像頭視頻和輔機位攝像頭視頻,對網絡帶寬的要求很高。因此在考試前,學院特別向網絡中心申請增加帶寬,在經過多次測試后,確定既能保證圖像精度,又盡量少占用帶寬的上傳輸率。此外,在Matrix 平臺也同步開啟抄襲檢查等防作弊功能。通過實踐證明,研究生夏令營遠程機考基本上達到了預期效果,實現了公平、公正、公開選拔優秀人才的目的。
歷經近6 年的建設,由中山大學計算機學院自主研發的Matrix 平臺為程序設計類課程提供了教學、機考、在線評測等功能。在新冠肺炎疫情影響下,中山大學計算機學院通過創新翻轉課堂的教學方式,對學院全體2019 級約600多名學生開展程序設計課程的遠程教學與在線競賽輔導。特別在2021 年6 月廣州地區疫情反復的情況下,通過建立面向考生的管道模型,有序地開展考生身份核驗、主輔機位引導與測試工作,順利的舉辦了遠程機考。
隨后,對學院700 多名考生(50 多名轉專業考生和600多名優秀大學生夏令營考生)實施遠程機考,取得了良好的成效。盡管在遠程教學和遠程機考實踐中取得了良好的效果,但也存在著人力資源的浪費和成本過大的問題,后續將繼續提高遠程教學與機考在身份核驗、遠程監考的自動化程度,同時也進一步推進遠程教學與機考有序實施與推廣。