什麼是OnlineJudge(OJ)系統
程序設計類課程是計算機類專業的專業基礎課,是數據結構、作業系統等計算機核心課程的前導課。程序設計能力是高校理工科學生,特別是計算機類專業學生所應具備的基本能力,尤其是當今超級計算、大數據和雲計算風起雲湧的時代,對於高校學生程序設計能力的培養提出了更高層次的要求。
然而,目前程序設計類課程教學存在的主要問題是傳統教學模式存在「重知識、輕技能,重語法、輕思維」的弊端,課程之間無法達到無縫銜接。學生對於程序設計的理解水平、應用能力是千差萬別的,單一的教學模式無法適應眾多學生的需求,導致學習的效果大打折扣。在線評測系統(Online Judge,oj)起源於國際大學生程序設計競賽(ACM/ICPC),是一種採用黑盒測試原理進行電腦程式正確性判斷的自動化程序。該系統具有比賽公平性好、評測自動化程度高、節約人力成本等優點,廣泛應用於各類電腦程式設計比賽和編程訓練教學等。在線評測系統既可以指該系統的源碼,也可以指該系統運行的一個實例。從信息系統的角度看,由於在線評測系統安裝、維護上的難度,應當將系統軟體整個生命周期中的所有軟硬體資源和參與的管理員、用戶綜合起來,認為它們都是系統的一部分。
龍芯OJ平臺輔助教學的優勢
1易於部署、維護、管理
整個系統建立在通用Web平臺上,可以簡單、快捷地搭建運行環境,編寫自動化安裝腳本,實現通過簡單命令完成環境搭建。使用後臺管理模塊,可管理各級用戶權限和監管資料庫內的已有數據。系統中的日誌記錄模塊,詳細地記錄系統運行的狀態,為排除系統故障提供有力的支持。
2)節約人力成本
在線完成各種編程練習,不僅節約紙張資源和教學活動中消耗的教師人力資源,而且可以全天候為學生提供必不可少的實踐練習機會。與傳統作業方式相比,在線學習參與者可以隨時提交並運行程序代碼,並立刻得到程序正確性的反饋。通過上述自動化的教學手段,學生能夠更好地掌握學習節奏,提升學習效果。
3)提高教與學效率
通過使用系統,教師可便捷地組織作業、發布作業、進行課堂點名、隨堂測驗以及查看班級內學生的學習狀況,及時提醒存在不及格風險的學生;學生也可以方便地在系統中完成作業並即時得到作業結果,還可以在線上與教師進行專業領域的交流以學習更多的擴展知識。系統上線的一年多來,任課教師的教學過程管理效率有了大幅度的提升,學生的學習效率也得到提高。據任課教師反饋,在程序設計類課程的教學中引入本系統之後,學生的學習成績有了明顯的提高。
(OJ系統界面)
OnlineJudge系統架構
主體架構分為判題內核Judged和Web界面兩部分,它們通過共用一個MysQL伺服器實現任務隊列和數據通信。判題服務Judged是一個系統服務進程,隨作業系統一起啟動,並隨時監視資料庫伺服器中的任務隊列;Web界面由一組PHP程序構成,運行在Nginx伺服器上。當用戶提交新的答案後,Web程序就將判題任務加入資料庫的任務隊列,隨後判題服務程序Judged則自動鎖定任務並完成,可以防止同一任務被多次判斷而浪費系統資源。其系統結構如圖所示,其中MySQL伺服器、Web伺服器、判題服務Judged既可以由同一臺伺服器承擔,也可以分別由不同的服務承擔,以實現分布式計算。web伺服器可以採用Nginx集群,MySQL伺服器可以使用主從式結構,Judged伺服器可以用提交編號靜態分配判題任務,也可以通過資料庫的鎖機制實現動務分配。這樣的設計不但能夠適應日常教學的小範圍使用,而且可以從多個伺服器集群的規模,高效應對大規模的並發服務。
(OJ系統結構)
(OJ系統架構)
OnlineJudge系統優勢
1開發了安裝嚮導,實現圖形窗口化方式安裝,並編寫了詳細的安裝說明。
2可視化的題目管理界面,umeditor實現超文本編輯與圖片上傳功能。
3重構和改寫了判題內核程序,提高了系統代碼的可讀性和多線程判題的性能,對多核心處理器有更好的支持。
4支持C、C++、Java、PHP、Python程式語言。
5數量龐大、題型豐富的高質量題庫。
6具有多國語言包,支持國外用戶使用。
7可以提供完備的諮詢與在線安裝、維護服務。
8以龍芯伺服器為支撐,安全可控。
(OJ系統界面)