2.7 相似系統的分析與簡介
2.7.2 Jupyter nbgrader
國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
5. 假如有十組 test case,它的自動測試會一次執行所有的 test case,不論各組的測試是 否通過或是不通過、是否有嚴重的編譯錯誤,執行結果會顯示各組測試的分數,可 點選各組的 test case 查看答題情況和詳細的測試訊息。
6. VPL 有相似度檢查的功能,能夠檢查檔案之間彼此的相似程度,用於偵測作業抄襲。
7. 修課學生管理清單,能夠掌握學生的作業繳交和學習狀況,如圖 5 所示。
圖 5 修課學生一覽
8. 可對程式編輯器做功能限制,例如:為避免程式的作業抄襲,可禁止使用編輯器的 複製、貼上功能,達到降低作業抄襲的機會。
2.7.2 Jupyter nbgrader
Jupyter nbgrader [41]是個以python語言作為程式作業的發放/繳交/評分系統。於 Jupyter上開發的nbextensions tool稱為"tool bar",由此工具來協助老師制定程式作業,並 透過一系列的nbgrader指令,包括:assign、release、verify、test等,對程式作業執行不同 的處理。Jupyter nbgrader具有嚴謹的檔案目錄結構,假設以"Java程式設計"這門課程為例,
則檔案目錄結構共有七大項類別,以下依序做詳細的介紹,檔案目錄結構如圖6所示。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖6 檔案目錄結構
首先,nbgrader_config.py檔用來設定課程的nbgrader組態檔,包含:課程id、修課學 生名單、作業繳交期限等資訊。gradebook.db檔用來存放修課學生名單、作業版本資訊、
學生的作業成績和繳交情況。source file資料夾用來存放原始版的程式作業。release file 資料夾用來儲存準備發佈的程式作業。submitted file資料夾用來儲存學生繳交的程式作 業,依據學生id存放於不同的資料夾。autograded file資料夾用來存放已經批閱過的程式 作業。feedback file資料夾用來存放老師對學生的作業所做的回饋內容。以下為Jupyter nbgrader系統的優點及特性,逐一做說明:
1. Jupyter nbgrader 提供老師和學生在瀏覽器上一個簡易的程式編輯器,程式編輯器如 圖7所示。程式編輯器具有基本的編輯功能如:執行(run)、複製(copy)、貼上(paste) 等功能。於編輯器上方的tool bar中可選擇”Create Assignment”,其用來產生新的程式 作業檔案,而Total point呈現該份程式作業的總分。程式編輯器由多組且獨立的code block所組成,code block有四種功能做選擇,老師可為每組code block設定適當的功 能選項,code block會依照選擇的功能進行不同的測試。code block具有以下有四種 功能選項:選擇”Manually graded answer”功能的code block,此code block會經由手動
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
的方式進行測試並評分。選擇”Autograded answer”功能的code block,表示此code block已經進行過測試,不須再做測試,可直接輸入評論。選擇”Autograder tests”功能 的code block,此code block會進行自動測試和自動評分。選擇”Read-only”功能的code block,此code block不做測試,只用純文字呈現。
圖 7 程式編輯器
且不論以手動或自動的方式來進行測試,最後會完整顯示各組code block的得分情 況,並針對各組code block列出詳細的測試結果,與批改者的評語,如圖8所示。所 有學生的作業評量結果將會儲存在本地端的資料庫,儲存資訊包括:作業名稱、作 業實際繳交日期、截止日期、學生姓名、電子信箱、總得分等資訊,如圖9所示為 資料庫存放的資料欄位。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖8 測試結果
圖9 作業評量結果
2. 於測試和評分階段時,如果code block的功能是被設定為“Manually graded answer”選 項,則此code block需要人工手動作批改評分。如果code block的功能是被設定為
“Autograded answer”選項,則不會進行批改和評分。如果code block的功能是被設定 為“Autograder tests”選項,則會進行自動測試,完畢後產生分數,老師可親自檢閱這 些code block,判斷其分數是否正確、合理,並斟酌作調整。並且該code block有“Full credit”和“No credit”兩種選項,可快速選取。旁邊的數字方塊也可供老師做分數上的 調整。此外,於code block內,每個“assert”字詞代表一組判斷式,也就是一組測試,
需要通過全部的測試,才能獲得該code block的分數。如果code block的功能是被設
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
定為“Read-only”選項,則此code block只能瀏覽而不能更改,經常用作為題目的說明 解釋部分,如圖10所示為測試和評分階段的實際範例。
圖 10 測試和評分階段
表2顯示的是本研究所研製之工具(以下稱為本系統)與Moodle VPL以及Jupyter nbgrader 三者之間的優缺點相互比較,因為目前市面上有關於程式作業的管理工 具相當多,所以我選擇平常有使用到的這兩種管理工具做比較。本系統較優於程 式編輯器和自動化產生測試程式碼的部分,尚且不足的部分,將計畫於未來研究 將會逐步加入新功能,以及改善現有的功能項目,例如:各項操作介面的優化、支 援程式作業的交付通知和到期通知,以及程式作業的確認通知等。
‧
表2 本研究所研製之工具與Moodle VPL、Jupyter nbgrader三者工具的優缺點相互比較表 工具
項目
本系統之工具 Moodle VPL Jupyter nbgrader
專案管理 Gradle , Nexus repository
Moodle server , jail server
Nbgrade,