建立題目

基本概念

在題庫頁面點選【Questions】→【New Question】會開始建立一個新的題目。一個題目有幾個要決定的內容:

  1. 題目類型 (type):設定題目的呈現方式和答案的輸入方式。
  2. 題目描述 (description):標題,簡短說明題目的內容,方便出作業的老師選擇題目。
  3. 註解 (feed back):可以在答題後顯示給學生的文字。
  4. 解答 (solution):類似註解,我們不會用到這一項。
  5. 提示 (hint):提示,但是寫在題目內比較方便,所以我們也不會用到這一項。
  6. 演算法 (algorithm):程式碼,相當有用的功能,以後會用很多篇幅介紹。
在決定題目類型和題目描述後就可以先按【Next】到下一張網頁,設計題目內容。不同的題目類型會有不同內容要設計,進一步的說明請底下的說明。編輯完成後,點一下【Finish】按鈕,到此還沒結束,需要決定題目所屬的群組。一個題目可以屬於兩個群組,但目前 Maple T.A. 在這方面的設計不是很好,盡可能讓一個題目屬於一個群組就好。決定群組後按【Submit】,如果看到剛剛打的題目預覽,就表示題目建立成功。註解或演算法 (或其他) 可以先編輯好題目後再以修改的方式添加,也可以先添加後再編輯題目內容。但是題目類型只有在建立題目時可以決定,不能事後修改。

演算法

Maple T.A. 的題目不一定是固定的,利用演算法 (algorithm),Maple T.A. 可以生成不固定的題目,也就是說學生每次打開同一份作業,看到的題目會發生變化。以目前的網頁技術,要生成變動式的網頁並不困難。Maple T.A. 提供了一些簡易的語彙,讓使用者可以用簡單的方式產生可變化的題目。所以 Maple T.A. 的每個題目都有一個區塊用來儲存程式,這個區塊就稱為演算法 (algorithm)。

放在演算法的程式是由 Maple T.A. 制定的規則編寫成的純文字,如果讀者熟悉 PHP,可發現其規則像是將 PHP 大幅簡化的結果。程式幾乎沒有流程控制,也沒有迴圈,但有兩個重要的功能:一、有 maple() 函式可呼叫 Maple kernel。二、有 mathml() 函式產生數學式 (圖片形式)。以 Maple T.A. 的性質來說,這兩項功能已經非常實用。另一方面,簡單的程式規則也代表學習時間短,在我們的經驗裡,一名學士班學生只需要一個小時左右的課程,就可學會 Maple T.A. 的語法。剩下的問題,就是要提升 Maple 的功力來應付各種狀況。演算法的詳細說明,請參考其他網頁。

題目類型

Maple T.A. 有數種題目類型,這些題目通常會提供一個文字欄位讓出題者輸入題目敘述,其中也有方程式編輯器讓出題者編輯數學式。除了文字欄位,不同的題目會提供不同的答案欄位,例如 Numeric 多提供一個文字欄輸入數字,Multiple selection 提供幾個圓形按鈕 (radio) 讓使用者勾選等等。在所有類型的問題中,Essay 只提供輸入欄讓學生以類似證明或申論的方式作答,因此沒有自動評分的功能。其他的題目都有自動評分的功能,需要出題只指定正確答案。底下介紹幾種較常用的題目類型。請出題者參考答題,了解這些問題在答題者看來會是什麼樣子。

題目敘述

決定題目類型和描述後,按下【Next】會開始輸入題目的內容,不管是哪種題目類型,都會有一個很大的輸入區域讓出題者輸入題目敘述。在這個區域中出題者可以輸入文字,也可以利用其中的按鈕來控制字型等等。這些功能其實是 HTML 標準語法編輯而成的,如果出題者熟悉這些語法,可以按【原始碼】按鈕編輯文件。但要注意的是這個輸入欄並沒有包含完整的 HTML 語法,所以不是任意輸入都可被正確執行。

在所有功能中,至少有一個功能 (另一個將在以後碰到時說明) 是無法透過編輯原始碼的方式完成,這個功能就是數學式編輯器。在題目敘述提供的選項中,最後一項是數學中 sigma(或總和) 的符號,點選後會跳出一個包含 Java Applet 的視窗,答題者可用滑鼠右鍵輸入數學符號。編輯後的式子將會以圖片嵌入網頁當中。雖然實際上,這個圖片的生成會利用到 MathML 的語法,但是答題者並無法在原始碼中用 MathML 語法來生成數學式,Maple T.A. 會當作沒看到相關語法。

True/False

是非題。在題目敘述下方有【True】和【False】兩個選項,出題者需要勾選其中一項作為此題的正確答案。

Multiple selection/choice

選擇題。在題目敘述下方有五個輸入欄,出題者必須在其中填入適當的文字,並勾選正確答案前的按鈕。雖然在決定題目類型時有兩種選擇題 (單選和複選),但其實在進入題目後可以選擇正確選項是否唯一 (Allow more than one selection?),因此單選和複選對出題者沒有區別。

在選項下方可以設定選項是否唯一,也可以決定選項順序是否重排 (Change the order of the choices?),如果是,每次學生看到的正確答案位置就不會固定。如果要增加選項,可以按放在題目敘述上方的【Add Choices】按鈕。要在選項中使用數學式,可以先點擊輸入欄,再按題目敘述上方的【Equation Edit】按鈕。

Numeric

數值問題。題目內容會提供兩個答案欄讓使用者輸入,左邊欄位輸入數字,右邊欄位輸入單位。如果右邊欄位不輸入,代表不需要單位。所謂的單位只是一串文字,沒有其他功能,Maple T.A. 也不會自動解讀單位的意義,所以並不是很實用的設計。

在答案欄下方可以設定答題者答案的精確度,第一項【Require absolute accuracy】要求答題者輸入沒有任何誤差的答案。第三項【Accept +/- err:】會有輸入欄,只要答題者的答案和正確答案的誤差小於輸入欄內的數字就算答題正確。第二項【# Figures:】雖然指定答題者的答案正確的位數,但有一個缺陷,如果出題者在此要求答題者答案前四位數正確,但是答題者寫出了五位數正確的答案,則答案會被視為錯誤,所以我們不推薦使用這個選項。

最下方的欄位可以設定答題者的輸入格式:

【Accept 1000 separator】
答題者可以每三位數加一個逗號 (,),例如 123456789 可以打成 123,456,789
【Accept scientific notation】
允許答題者使用科學記號表示法。
【Accept $ signs】
可在數字前面加上 $ 符號。
【Accept arithmetic】
可以在答案欄輸入簡單的算式,由 Maple T.A. 算出答案。能使用的算子確定有加減乘除和次方。

Mathematical formula

會提供答案欄輸入數學式。雖然說是數學式,但也可以是特定格式的字串或文字。Maple T.A. 會盡可能地將字串當成數學式解讀,如果解讀失敗,那就當成普通的字串。舉例來說,如果出題者將答案設成

(x+1)^2
則答題者回答
x^2+2*x+1
Maple T.A. 會知道這兩個答案是同一個多項式。甚至於
x^2+2x+1
這個答案雖然漏了乘號,Maple T.A. 依然可以解讀。如果出題者輸入太奇怪的字串導致 Maple T.A. 無法解讀,則答題者就必須輸入跟答案完全相同的字串才能答對題目。

雖然是字串,Maple T.A. 依然會先行檢查,要求出題者的格式正確。更正確地說,Maple T.A. 會要求出題者選擇答案的格式 (Select the type of expression you want to accept:),Maple T.A. 會依照這個選擇給予答題者適當的答題資訊,因此會檢查出題者給的答案,避免出題者用錯誤的格式設定答案。以下是幾個常見的格式:

Formula
數學式,函數或數字,不得使用等號 (=)、逗號 (,)、分號 (;)。
Formula that matches responses to within +C
數學式。如果輸入的答案和正確答案的差是常數,Maple T.A. 會將這兩個答案視為相同的答案。
Equation
等式,可以使用等號的數學式,Maple T.A. 會自動解讀等式左右兩邊的數學式,讓答題者答案有某種程度的變動。
Unordered list of formulas
用分號隔開的多個數學式。答題者的答案順序不需要和出題者的答案順序相同。
Ordered list of formulas
用逗號隔開的多個數學式。答題者的答案順序要和出題者的答案順序相同。

Maple-graded

和數學式很類似的題目,會提供一個輸入欄讓答題者輸入數字、數學式等答案。但是在 Maple-graded 問題中,出題者需要提供可被 Maple 執行的指令或程式來判斷答案是否正確。舉個例子,滿足

sin(x)=0
的 x 有無窮多個,在 Maple-graded 中,可以設計讓答題者只要回答這無窮多個答案中任何一個就算答對。

在 Maple-graded 題目敘述下方有幾個輸入欄,第一個輸入欄可以輸入多個 Maple 指令,最後一個輸出將會儲存在 $ANSWER 變數,供下一個輸入欄使用。第二個輸入欄也是要輸入 Maple 指令,並且依照最後一個輸出來判斷答案是否正確。如果出題者不了解該如何寫出判斷答案的程式,可以不改動第二個輸入欄的內容,並在第一個輸入欄填入計算答案的指令。第二個輸入欄原本的指令判斷答題者答案和第一個輸入欄計算的答案相減等於 0 答案才正確。但如果出題者知道該如何改動第二個答案欄的指令,或許根本就不需要第一個答案欄,也不需要 $ANSWER 變數。

Maple T.A. 呼叫 Maple kernel 時,會自動將變數,也就是用 $ 開頭的英文詞彙代換成其他文字。所以 Maple 指令中會用到 $ 的指令就無法使用。另外,受限於 Maple T.A. 儲存的限制,符號 @ 也無法使用,因為會造成整個題目錯亂。Maple T.A. 大部分的變數是在演算法的部分產生,只有兩個變數:$ANSWER 用來儲存第一個輸入欄的輸入結果,$RESPONSE 儲存答題者的答案。所以在第個二輸入欄,判斷答案是否正確的程式碼中應該要用到 $RESPONSE。傳遞給 Maple 的變數最好用括號包起來,不然有可能發生 Maple kernel 無法解讀的錯誤。

Maple T.A. 會由判斷程式碼的最後一個輸出確認答案是否正確,如果傳回 1 或 true 就是答案正確,0 或 false 就代表錯誤。如果出題者想要部分給分,就輸出介於 0 到 1 的小數。除卻變數,判斷程式碼幾乎就是 Maple 的程式碼,出題者可以打開 Maple 程式來驗證程式是否正確。

第二個輸入欄下方可決定答題者答案形式 (Select the type of expression you want to accept:) 是數學式 (Formula) 或 Maple 指令 (Maple syntax)。如果是數學式,Maple T.A. 會略為修改答題者答案 (例如將 ln 變成 log) 再送到 Maple kernel,同時也會避免答題者使用 Maple 的強大功能。如果允許答題者使用 Maple 指令,則答題者就可能利用 Maple 強大功能作答,例如讓 Maple 來計算微分或積分。

最後一個輸入欄可以輸入 Maple 畫圖指令,將答題者的答案 (儲存在 $RESPONSE 變數) 畫出來。

由多個問題組合成的題目

Maple T.A. 有兩種題目類型讓出題者可以在一個題目來放置兩個以上的小題目,這兩種類型是 Question Designer 和 Multipart Question。Question Designer 在題目敘述時會多出一個按鈕【Insert/Edit Response Area】(文字只有在滑鼠移動在按鈕上才會看到,這個按鈕是 Equation Edit 按鈕旁邊的小圖示),會在題目中插入各種子問題。Multipart Question 則是在題目中包含其他題目當成小題目。

通常 Question Designer 比較方便。Multipart Question 在包含小題目後會成為獨立的新題目,即使去修改那些小題目也不會影響到這個新題目。最重要的是 Multipart Question 建立後,其包含的小題目內容無法修改,一定要重新修改原有的題目,再建立一次 Multipart Question。如果這些小題目只使用一次,那麼 Queston Designer 會比較方便。

有一件事是這兩種題目類型都無法達成的,就是出題者無法設定讓 Maple T.A. 同時分析所有的答案再評分。也就是說出題者不能在答題者作答第一小題後,再用第一小題的答案決定第二小題的答案。不過這只是程式設計上的小缺陷,以實用角度來看,這項功能並不是很必要。


上一個主題:題庫操作

下一個主題:演算法

首頁