羅英偉 汪小林 張正熠
文章編號:1672-5913(2009)02-0087-06
摘要:我院以傳統的Online Judge系統為基礎設計開發了針對在線程序設計實踐和教學輔助的編程網格系統。本文首先介紹該系統的目標和總體功能結構,然后詳細說明系統中的虛擬教學資源和教學活動,并闡述了系統在此過程中的教學輔助功能。
關鍵詞:程序設計類課程;Online Judge;教學輔助;編程網格;虛擬機
中圖分類號:G642
文獻標識碼:B
1引言
隨著計算機和互聯網技術的發展,網絡教育與計算機輔助教學引發了一場深刻的教育模式和教育觀念的變革。一方面計算機技術減輕了教育者的工作量,提供了更豐富的教育表現形式,并可在教育資源和教育對象之間建立聯系;另一方面互聯網技術使得更為廣泛的群體可以遠程接受到更高質量的教育。在這方面,人們已經有了不少的工作成就,MIT的開放課件系統OCW[1]和Moodle課程管理系統[2]即是其中的兩個。
在面向程序設計類課程的教學輔助方面,以PKU ACM JudgeOnline[3]為代表的Online Judge系統能夠對用戶提交的程序進行“黑盒判定”來自動生成判題結果。但從另一方面來說,傳統的Online Judge系統針對的是解題訓練,并不針對課程教學輔助的場景[4]。為了彌補這一不足,為程序設計類課程提供一定程度的網絡教學輔助,我們基于Online Judge功能,開發了一個針對程序設計類課程的教學輔助系統——編程網格系統(Programming Grid,PG)。
PG利用Online Judge的功能提供了程序設計類課程對學生編程能力的鍛煉,通過將現實中的教學中的資源、場景、活動引入系統,在虛擬教學活動中提供教學輔助功能,為使用該系統的師生展現了一個虛擬的程序設計類課程的編程訓練、教學輔助、教學互動的平臺。同時,為了方便各學校或者組織加入到此系統并充分利用其中的資源和功能,PG采用了分布式的系統結構,為系統未來的部署和發展奠定了很好的基礎。
2PG系統概述
PG面向的是程序設計類課程及其師生,以及網絡上的編程愛好者和計算機相關課程的自學者。對于PG來說,主要的用戶包括:一般用戶、學生用戶、教師用戶以及管理員。顯然,學生和教師用戶是系統中主要活動的發起者與參與者。
PG以Online Judge為基礎功能,為用戶解決編程問題提供自動判別能力,同時針對程序設計類課程,引入了題目、題集、文摘、課程等教學資源,以這些教學資源為核心形成了眾多的虛擬教學場景,利用這些虛擬教學場景中的教學活動為系統中的師生用戶提供教學輔助,特別在這些教學活動中增加了師生之間教學互動的功能,為教學中的一對一輔導提供一定的支持。下面幾節就分別概述一下系統的這幾個方面。
2.1Online Judge
Online Judge系統的最大特點是可以對用戶提交的程序“在線判定”其對錯。在Online Judge系統中,用戶可以在線提交程序多種語言(如C、C++)源代碼,系統對源代碼進行編譯和運行,并通過預先設計的輸入/輸出測試數據來檢驗程序源代碼的正確性,并對代碼生成的程序質量做一定的監控——譬如對程序運行時所使用的內存大小或運行時間進行限制。
目前,這一功能的實現方式主要是“黑盒判定”。對于每一個算法,我們知道,它有0個到多個輸入,1個到多個輸出,并且具有窮性、確定性和可行性等特征,而每一個算法都是解決一類問題。Online Judge系統上有很多的編程題目,對于每一道題目,都存儲了關于此題的多個輸入輸出對,這些輸入輸出對已經經過驗證符合題意要求。當用戶提交一道題目的源碼之后,系統會把這個源碼放入系統中編譯運行,并針對題目的每一個輸入輸出對比較用戶程序的輸入輸出。最后系統會根據結果返回給用戶一個狀態:通過(Accepted)、答案錯誤(Wrong Answer)、超時(Time Limit Exceed)、超內存(Memory Limit Exceed)、運行時錯誤(Runtime Error)、編譯錯誤(Compile Error),并同時返回程序使用的內存、運行時間等數據信息。
Online Judge功能對于程序設計類課程的教學來說十分有用,它可以代替教師對學生的程序正確性和一定程度上的效率作出判斷并自動給出結果,減輕了教師的工作量,教師可以在此基礎之上從更高的角度對學生學習效果和課程教學成果作出評估[4][5]。
2.2虛擬教學資源和場景
一般Online Judge系統針對的是編程訓練,更多看重的是用戶的解題數、解題質量和解題效率,并不關注在程序設計類課程教學過程中所可能有的教學活動和教學輔助。PG以Online Judge系統為基礎,但表現形式更為活潑多樣,并提供與程序設計類課程相對應的虛擬教學資源和場景,幫助虛擬教學活動的展開。本節中我們介紹一下PG中所引入的虛擬教學資源和教學場景,第3節中將詳細說明以這些教學資源和場景為中心,系統所提供的教學輔助功能,這是PG的特色所在。
PG中所包含的主要教學資源對象如圖1所示。

既然系統以Online Judge為基礎,那么PG中首先不可或缺的教學資源自然就是題目對象Problem。PG中的每道題目有它自己的描述,用戶可以針對每道題目提交自己的源碼,由Online Judge子系統來判定。PG中的題目都是由教師用戶更新維護的,并提供給系統的每一個用戶使用。題目有一個重要的屬性就是“題目數據”。在2.1節中我們已經了解到Online Judge的基本實現原理是利用了算法的輸入輸出特性,題目數據就是預存的關于一道題目所描述問題的正確輸入輸出對,在用戶提交源碼時,系統就是根據它們來判定用戶源碼所編譯生成的程序是否滿足題意。
與題目相關的資源對象還有解答對象Solution。所謂解答,就是PG所記錄的用戶針對一道題目的某一次提交結果,它的屬性包括這次提交的結果、提交者、提交時間、程序運行時間、程序運行所用內存大小等等。通過解答對象,為用戶——主要是學生的每次解題保留了歷史記錄,一方面便于教師針對指導,另一方面也方便學生自己自學復習。
PG針對題目和解答設置了相關的評論對象Comment。對于這些評論,系統做了嚴格的權限限制:只有教師(包括助教)才可以對題目和解答作出評論,這是為了促進教學輔導的開展——教師對于題目作出評論,可以方便出題者修改題目中的錯誤,促進更高質量題目的產生;教師對于解答作出評論,可以與此解答的學生進行互動,產生更好的教學輔導效果。
利用PG中的題目和在線評測的功能,可以讓用戶很好地訓練自己的編程能力,評價自己對于學習內容的掌握程度。但是,單純的題目對象,對于提高學生的學習效果并不是最有效的。在學習時,用戶可以采取多種方法選擇題目。譬如可以按修改時間排序選擇最新更新的題目,或者利用某個關鍵詞檢索一類題目,或者利用某些關鍵詞分別檢索出一些題目等等。但是,無論采取用戶采取哪種方法來檢索題目,對于教學來說,都是盲目且不理想的。也就是說,在僅僅有題目的概念下,系統所擁有的資源不過就是一個線性的題目集合。
所以,為了達到更好的教學效果,我們將現實中的練習、作業、考試等概念平移到系統中,并設計了題集ProblemList這樣一個對象來更好地管理和組織題目。題集是由教師用戶根據一定的教學目的組織成的一些題目的有序集合,是練習、作業、考試等的一個抽象概念。在引入這樣一個概念后,一些面向某種教學目的教學方案就在PG這個虛擬世界中有了承載體,教師可以創建這樣的承載體以體現他的教學目標并布置給學生,而學生則可以利用這個承載體來更加系統地檢驗自己的某一方面的學習成果。
關于題集的另一個重要對象是題集解答對象ProblemListSolution。在PG中,題目解答對象Solution應該是數據量增長最為快速的一個對象,任何用戶的每一次提交都會生成一個新的Solution對象,所以,從Solution對象集合中快速尋找出所需要的對象就成為了系統需要解決的一個重要功能。在面向題集的時候,對于題集中的題目的提交,詳細的信息都會記錄到Solution對象中。在用戶查看一個題集的相應解答結果時,系統就需要去Solution對象中尋找提交了該題集題目的對象,這個相對于一般的尋找某道題目的Solution對象是一個比較耗費資源的過程。從性能的角度考慮,同時也為了系統更好地對題集對象的管理,系統設置了ProblemListSolution對象,它存儲了某一個用戶針對某道題集的綜合的提交結果。
至此,在PG中,題目是基礎,題集是從管理題目的角度出發,為了更好地表現和完成某一個教學目的而設計出來的。但是,這些對于課程教學輔導來說是不夠的。很自然的,我們將現實中的課程引入到系統中來,這才算完成了針對課程教學輔導的虛擬教學資源的主體建設。
PG的目標針對的是程序設計類課程,在引入課程這個對象之后,才可以說是覆蓋了程序設計類課程教學的大部分過程。只有引入了課程對象,系統中的題目、題集等對象才能夠更有效地被組織管理起來,在課程的整體要求和目的下,對教學發揮更大也更具組織規劃性的作用。綜合言之,課程是PG中最基本的表現形式和教學輔助模式。
課程相關的對象很多,這是由它的地位和復雜性決定的。這些對象包括資源、通知、學生、授課老師、助教,當然,對于PG的功能來說,最為重要的是從題集對象引申的練習、作業、考試等課程題集對象。這些對象將是系統教學活動最主要的開展場所,這一點將在第3節中詳細說明。
PG的另一類特殊的教學資源是文摘。所謂文摘,就是一篇關于某個主題的文章,可能是關于某個技術,也可能是關于學習方法的PG來源于Online Judge,所以實際上,它是以解題為中心的一個系統,通過解題以及反饋來幫助師生達到教學目的。而文摘的出現則是系統為了進一步拓展以解題為中心的功能,同時希望從理論的角度鞏固學生所學而設計的一類輔助的資源,它的目的是為了給學生一些課外的參考資料,擴大學生的認知范圍和知識面,拓展學生學習的深度;同時,在以課程為主題的PG中,文摘的出現,可以配合題目題集等資源,在學生通過解題檢驗自己學習水平的時候通過相應知識點理論的鞏固來進一步加深自己的學習效果。文摘在系統中可以與題目、題集、課程等其他資源相結合來達到這樣的教學目的。
綜上所述,PG的實現邏輯模塊圖如圖2所示。

2.3分布式系統結構
PG的分布式結構是要使得系統具有良好的性能,可以承受更多的訪問量。分布式結構最大的好處就是可以使得更多的院校或者組織可以根據自己的需求來搭建部署環境,只需要一定的步驟,就可以加入PG,獲得其中的全部資源和功能。一方面方便了各種學校和組織的加入,另一方面也拓展了系統的安裝部署。
對于PG來說,它包含了兩類不同的節點:PGM和PROGRAMMING,見圖3。

1. PGM:管理出題平臺。PGM是PROGRAMMING GRID MANAGER的簡稱。PGM相當于一個“基本教學資源”的儲備和管理平臺。在PGM上的“基本教學資源”包括題目、題集、文摘等,這些資源,都是課程的基礎。課程作為系統中最重要的教學場景,它的教學活動離不開對題目、題集、文摘的利用。PGM的功能就是供教師創建更新管理這些基本資源的,它關注于教學活動課程之前的“備課”階段。
2. PROGRAMMING:課程教學輔助平臺。對于PROGRAMMING 平臺來說,它的任務一方面是在資源上(題目、題集、文摘等)與PGM同步,確保自己平臺上的資源是最新的、準確的,另一方面PROGRAMMING更重要的任務是以課程為脈絡,所有資源——利用前面同步功能所獲得——以課程為骨架構建,為師生提供一個課程教學的虛擬環境。
PGM面向的用戶主要是教師,關注于教學活動中的課程教學資源的準備環節,目的是為教師提供一個教學資源的管理環境,為課程等其他教學活動的開展提供豐富可靠的資源保證;PROGRAMMING面向教師和學生,關注于教學活動中的課程環節,利用PGM提供的基本教學資源,以課程為組織線索,目的是構建一個針對程序設計類課程的虛擬化網絡課程環境,是系統中教學輔助的主要場所,是系統最終價值和用途的體現。
PG中的數據同步模塊保證了PGM和PROGRAMMING在題目、題集、文摘等教學資源上的一致性。這樣,任何學校和組織只需要安裝部署好PROGRAMMING節點,那么他們可以通過系統的數據同步功能得到PGM上的所有資源,同時獲得PG的全部功能,對于各學校和組織來說十分方便。
3系統的教學輔助
3.1題目
針對題目相關的教學活動包括:
1. 出題。這是題目的創建過程,題目只有被創建出來之后才能為教學所發揮作用。
2. 解題。這是編程網格的基礎功能
3. 統計。在解題過程中,系統會記錄下各種信息,并且會對解題情況的各種記錄做統計并由此為教學輔導提供幫助。
題目教學活動的場景如圖4所示。

在題目這個教學場景中,有題目、題目附帶資源、題目數據、解答、題目評論和解答評論多達6個相關的資源對象。這6個對象涵蓋了此教學場景從出題、解題到統計的所有過程。
PG基于Online Judge功能開發,題目是所有教學活動開展的基礎。所以,必須有良好的題目資源作為保障,才能使得系統其他教學活動順利展開。
從教師出題來說,對于一道題目而言,包括題目本身以及題目附帶資源和題目數據的更新。特別是題目和題目數據對于一道題目實現其全部價值來說是不可或缺的。所以,在一道題目中,我們將面對教師用戶提供題目數據和題目附帶資源的管理鏈接,提示幫助他們更全面的管理題目的資源。
一般而言,我們對于系統中的資源有3個方面的要求:(1)豐富,即系統中所擁有的資源比較多,能夠滿足師生的需要,吸引用戶;(2)準確,即用戶能夠比較精確的定義描述一個資源,方便使用和檢索,更進一步說是絕大部分用戶能夠對于一個資源的描述有相同的看法;(3)協調,即資源之間需要滿足一定的關系,比如應當確保不要出現不同的教師出了相類似的幾道題目,導致資源浪費。
從針對題目的角度出發,豐富方面需要我們提供更好的用戶界面和流程來幫助用戶出題;準確方面可以由標簽(Tag)來完成。對于一道題目,它所表現的內涵,教師希望它所達到的教學訓練目的等外延,都可以記錄于Tag中,使得系統在檢索、使用和進行教學輔助時都可以從中獲得更好的支持;協調方面主要從題目的標題考慮,一個題目的標題大體上反映了這個題目的主要內容,在教師用戶出題時,當用戶寫完“題目標題”屬性之后,系統會即時從后臺查找數據庫中與此類似的題目并在網頁上顯示。如果系統中已有類似標題的題目,系統會提示給用戶相應題目的標題和URL,由教師用戶去判斷是否據此終止出題過程。
而在終止之后,教師用戶可以選擇另一方案:協同出題。即當教師用戶看到與自己所要出的相似的題目后,可以終止自己的出題過程,而選擇在那個類似題目的頁面上申請協同出題。這個申請會發往出題者信箱內,出題者可以選擇接受或者拒絕。所謂協同出題,就是對于一道題目,可由多人一同進行更新修改。協同出題不僅可以用于此場景,任何教師用戶對于一道題目產生興趣之后都可以申請協同出題。
新出題目均默認為“測試”狀態,其含義是此題的描述,特別是題目數據在測試當中,可能有些地方還需要修改。只有當出題者認為題目已經經過了測試正常無誤(如果有協同出題者,則需要半數以上的協同出題人員同意才可以),則可以選擇發布題目,并選擇發布為公開狀態或者隱藏狀態。隱藏狀態的題目集合作為一個秘密題庫,可以供教師在布置考試的時候從中選擇題目,確保考試的保密性。如果題目有協同出題者,那么在選擇發布之后,系統將會把信息發送到所有協同出題者的信箱供他們確認同意或者否決,在每次的確認過程中,一旦發現超過半數同意,則將題目的狀態置為相應的公開狀態或者隱藏狀態,完成題目的“發布”流程。
解題及查看解答。解題是PG的一個基礎功能,普通用戶只能解答“公開”狀態的題目,而教師用戶可以解答任何狀態下的題目。在解題之后,系統會記錄此次解題的結果存入解答對象中。解答的內容包括此次解題的狀態結果、對于各題目數據的運行時間和內存大小,提交用戶名,提交時間等等。用戶可以查看解答歷史,普通用戶對于自己的解答可以查看其中的源碼,對于別人的解答只可看到一般的結果信息——包括結果狀態、提交者、提交時間等等。教師可以查看所有的解答詳細信息。
除了這些單獨的信息之外,普通用戶還可以查看關于一道題目解答的統計信息,包括此題一共被解答了多少次,其中通過多少次,編譯錯誤多少次,超時多少次等,及其這些狀態占總數的百分比。
在PGM上,教師用戶針對題目可以評論,目的在于促進題目資源更好的建設。
在PROGRAMMING上,教師用戶針對解答也可以評論,目的是為了促進教學效果,是系統教學輔助話工作的一個方面。這些評論都將生成報告發信給被評論資源的擁有者,提醒他們注意。
3.2題集
有關題集教學活動的場景如圖5所示。
針對3.1中所提出的豐富、準確、協調的三要求,題集也做了相應的設計處理以滿足要求。在更新管理題集的過程中,系統積極為教師提供教學幫助。此間的一個問題就是教師在更新題集的時候無法知道系統中有多少題目,哪些題目能夠比較切合滿足此次題集的要求,反映此次題集的教學目的,可以作為題集的備選題目來加以考慮。普通的方法是教師考慮一些關鍵詞進行搜索,或者教師新建一些自己所掌握知曉題目,但卻并不知道系統中是否應有了合適的題目甚至是相同類似的題目而造成資源的重復和浪費。

從上述要求里,我們了解到,當教師明確了題集的目標和責任之后,他會找到一些可以恰當形容此次題集的詞語,這些詞語可以形容此次題集的目標,考察范圍,知識點,所要求采用的算法等等。這些正可以在教師創建更新題集的時候寫入題集的Tags屬性中,表明此次題集所對應的標簽。而系統則可以利用這些標簽去檢索對應的題目,供教師選擇是否可以作為此題集的備選。所以,標簽對于題集而言,不僅可以做到準確協調的功用,更可以促進教學活動的開展。
解題集是在解題的基礎之上發展而來的。解題集相對于解題的好處是題集更具有針對性和組織性,用戶在解題集的過程中,可以訓練自己掌握某些方面知識的水平,進一步鞏固或拓展自己的所學。針對用戶在做題集過程中對題集的每一次提交解答,系統除了記錄針對題目的解答信息之外,還會記錄針對題集的解答信息,包括題集中各題解答最終狀況,最后針對此題集的提交時間、提交者等等。教師可以查看所有學生關于此題集的解答統計信息,并根據學生所解答出的題集題目個數和最后提交時間來排序,以掌握學生的總體學習情況。學生也可以據此對于自己解答的結果和他人做一個比較。
3.3課程
有關課程教學活動的場景如圖6所示。

課程是系統中最復雜的教學場景,也是最重要的教學場景,面向用戶展示最多的教學場景。同時,課程的教學場景中往往也包含了題目、題集、文摘的教學場景,使得針對于課程的在線實踐和教學輔助工作顯得非常的龐雜。下面,我們從系統中一門虛擬課程開設上課的過程來對這個教學場景的相關工作作一論述。
(1) 開課及管理課程。作為PG中最重要的教學活動場所,課程是由教師來開設管理的。PG中的課程是類比于現實中的課程而設置了很多相關的變量,像課程的起止時間、課程助教、課程注冊起止時間等等,教師通過這些屬性的確定可以將一門課程完整的形象展現給系統這個虛擬學習環境中的用戶。除了課程本身的屬性之外,教師應當還需要為課程設定通知、章節、課件等相關對象,這樣可以使得虛擬學習環境中的課程內容更加豐富完備,便于學生在學習過程中進行查找翻閱。
(2) 布置練習、作業、考試等并作輔導及統計。在課程教學活動中,這是最重要的一環。教師在講授一門課程的過程中,根據教授內容和進度,在不同的時間點進行要求、目的、內容不同的“布置”,以期訓練提高學生的水平并對教學成果做出評估。這些“布置”都是有時間限制的,而特別地,對于考試來說,還有IP限制和登錄限制,這樣就可以很好地防止作弊。在“布置”的過程中,教師會對題集中的每道題目給予適當的分數百分比——總分需要達到100——以便系統自動給分。在這個過程中,教師可以查看學生的解題源碼和結果,對學生的解題做出評論及輔導,并可修改系統的給分結果。教師可以查看某次“布置”的統計信息,包括班級排名和提交情況等等;同時也可以根據多次“布置”的統計信息來對學生做出綜合評定。這個過程,簡單來說,就是教師選定幾次“布置”,然后為每個“布置”設定分數百分比——總分依然需要為100,最后由系統計算得到結果,此結果也可由教師下載成電子表格格式存檔。
(3) 選課。課程教學作為PG中最重要的教學活動,用戶如果想參與進去,就應當選修他想學習的那門課程。與現實世界中類似,教師會為課程設定注冊碼,用戶必須輸入正確的注冊碼才能選修上課程。這個課程注冊碼可以看作是教師和學生關于某門課程的一個口令,方便教師通過學生們的選課。
(4) 參與課程教學活動。學生可以參與的課程教學活動很多。包括:閱讀各種通知,了解課程的大綱、參考文獻、要求等等;了解課程各章節內容;下載課程課件學習;從課程所提供的鏈接訪問課程主頁學習可能更多的內容。當然,在PG中,學生最重要的課程教學活動就是完成教師關于某門課程布置的練習作業考試。這些練習作業考試都是有時間限制的,學生必須在規定的時間段內完成。在完成這些“布置”之后,學生可以查看關于此次“布置”的統計信息,包括自己在班級的排名,班級關于此次“布置”題目解題結果的一些統計信息,還可以就某一問題向老師提問,等待老師的回答。
(5) 教師在班級的某一次練習、作業、考試中,選取比較優秀的學生解答,作為“推薦解答”或“推薦代碼”介紹給全班同學。為了增強學生的主動性,學生可以就某門課程,或者某次題集,或者某道題目的解答發信詢問老師,以期獲得更具針對性的輔導。在課程、題集或者解答的頁面上,會有相應的“答疑”鏈接,學生通過它向老師詢問的同時,系統會自動將原始網頁的URL記錄下來附于信件一起發送給老師,使得教師可以根據“現場信息”給予更好的輔導。
3.4 文摘
文摘相關的教學場景比較簡單清晰,邏輯也并不復雜。文摘是系統中的一個輔助信息,目的是為了幫助學生解題和在解題之余更好地理解題目中所蘊含的概念方法,從更高的理論角度來掌握這些信息。
3.5 標簽
標簽是由用戶定制的,我們希望通過它能夠全面詳細精確地描述一種資源,同時通過標簽之間的關系,我們可以在擁有這些標簽的資源之間建立各種各樣的關系,從而達到用戶能夠更精確的描述資源,而系統能夠通過標簽更準確的理解資源以及用戶的請求,從而更“聰明”的為用戶服務的目的。
有了標簽模塊之后,系統對于資源的掌握和反應更加“智能”,我們可以得到很多新的功能和應用。可以利用標簽在用戶新建一個題目、題集、文摘時指出相應類別乃至類似的同類型資源,供用戶作為參考。譬如,在學生解一道題目的同時,旁邊可以列出相關的文摘供學生參考,亦可列出相關的題集供學生進一步鞏固拓展自己之用。
Tag更為重要的地方的是在教師更新某一題集時,可以根據教師為此次題集所設置的標簽,系統獲得這些標簽之后,對于每一個標簽都去檢索其相關的題目,將得到的結果集合起來,并在頁面上給予教師提示,教師可以利用這項功能去尋找可能與此題集相關的題目。這樣就解決了一個十分重要的問題:為教師更新題集提供備選題目,減少教師的工作量,教學活動的盲目性以及教學資源的重復浪費。如果沒有這個功能,教師在更新題集時,并不知道系統中有多少題目可能與他的這次題集有關聯,可能需要教師對系統中的所有題目瀏覽一遍才會有所領悟。而有了這個功能,則教師只需要關注此次題集的目的,所要考察的知識點等信息,將這些列為題集的Tag,由系統根據這些Tag去尋找相關的題目,提高了信息的效率,起到事半功倍的效果。
標簽之間的關系并不是并行的,它們之間可以根據相關性分析,而產生相關聯的關系。從教學輔助的角度出發,我們需要在這些標簽之間建立與教學活動有關的,能夠為教學輔助提供支持的關系。這些關系包括:
(1) 同一性。即2個短語實際上描述的是同一回事。例如:遞歸和recursion。
(2) 關聯性。即2個短語之間互有關聯。例如語言基礎中if和switch同屬于條件語句關鍵詞。
(3) 前驅后繼關系。即a和b兩個短語之間a為b前驅,反過來,當然b為a后繼。所謂前驅和后繼的語義,主要體現在知識點的前后繼承掌握上。譬如在C語言中,數組是指針的基礎,學生只有在學習了數組之后才能對指針有更好的認識和應用,所以可以在這里可以認為數組是指針的前驅,而指針是數組的后繼。
根據上面所述的3種關系,我們為標簽之間建立相應的關系形成所謂“知識圖”結構。利用這個知識圖結構,可以完成很多具有挑戰性的功能。比如最直觀的,教師可以通過這個知識圖來輔助他教學,并作為課程出題的依據之一。同時,在學生解題的過程中,系統可以根據學生所作題集和題目的標簽,給出幫助和建議,來輔助指導學生進行進一步的學習。現在所能設想的場景為:
一名學生在解題時(題集或單獨的題目均可),系統利用該題集或者該題的標簽,去系統資源中尋找和該題相關聯的題目,并給出提示和推薦,由學生自己根據這些推薦來決定下一步的學習。這些推薦可以來自3個方面:
(1) 系統根據該題集或該題的標簽尋找和它具有同一性和關聯性的標簽,然后找出這些標簽的題目,并作為和該題“類似的題目”推薦給學生,幫助學生鞏固該類別的相應的題目;
(2) 系統根據該題集或該題的標簽尋找以它作為后繼的標簽,然后找出這些標簽的題目,并作為做該題之前“需要鞏固的知識”推薦給學生,幫助學生鞏固基礎;
(3) 系統根據該題集或該題的標簽尋找以它作為前驅的標簽,然后找出這些標簽的題目,并作為做該題之后“可以深入學習的知識”推薦給學生,幫助學生深化所學知識。
3.6教學互動
教學互動的主要功能位于課程教學活動中,因為在這個環節中,教學互動有著明確的供體和受體。這個功能是通過系統中師生之間的問答來提供的,并且此功能和系統的站內信件子部件結合在一起,為師生提供了一對一的輔導功能。
具體說來,師生可以針對課程的某一個題集、題目甚至一個解答進行問答,這些問答過程會記錄在雙方的站內信件過程中。如果一門課程有助教,則學生的提問將會發送到相應的助教,但是教師可以查看、問責這一環節。
4結束語
PG的開發起源于北大ACM代表隊的POJ(http://acm. pku.edu.cn/JudgeOnline)系統,力圖成為一個對用戶更友好,數據資源表現方式更豐富更適合教學的網站;在開發過程中受到了Moodle課程管理系統的影響,轉而成為一個更加專業的,更深入教學過程并為教學提供服務的系統。在演化過程中逐步形成了系統的三大特點:分布式的結構、對教學資源的有效管理以及教學輔助的功能支持。
PG系統目前已經有了一個可以使用的版本(http:// programming.grids.cn),我們在北京大學“計算概論”、“算法程序設計與分析”等課程的教學上已經使用了該系統。為了提高服務器系統的使用效率以及整個系統的可管理性,同時也保證系統的可用性,我們將PG系統部署在虛擬機環境下,在實際應用中取得了良好的效果。實踐證明,PG系統的是有成效的,受到了師生們的一致好評。同時,師生們針對各自在教學和學習過程中遇到的問題,提出了許多寶貴的意見,將有利于PG進一步的完善和發展。
PG是我們在程序設計類課程教學方面的一次比較成功的探索,我們相信系統可以為教師和學生的教學過程提供更好的幫助,并有望為其他從事相關工作的人士提供一個平臺;同時,我們也會遵循我們的思想和理念,繼續不斷的改進系統,為計算機程序設計類課程的教學作出貢獻。
參考文獻
[1] http://ocw.mit.edu
[2] http://www.moodle.org
[3] PKU ACM JudgeOnline. http://acm.pku.edu.cn/JudgeOnline
[4] 李文新,郭煒. 北京大學程序在線評測系統及其應用[J]. 吉林大學學報(信息科學版),2005,23(增刊):170-177.
[5] 郭煒,李文新. “程序設計實習類課程如何準確考查學生學習情況”[J]. 吉林大學學報(信息科學版,2005,23(增刊):99-103.