第三章 線上多人批閱及分析系統
3.4 註記分析器(A NNOTATION A NALYZER )
w :在同一點,所有註記重要性(level)的平均值
o:在同一點,有幾個註記的錯誤類型是重複的
s:都是代表在此註記的學生總人數 (3) 當註記的作者有教師也有學生時
在此這種狀況下,本研究仍以教師的註記為準(在本研究內,還是認為教師 的註記可信度比學生的還高),因此會採用第一種情況(即註記的作者都是教師) 的算法來計算每個註記的可信度。
邊欄位代表系統內定的所有錯誤類型種類,右邊欄位的長條圖則代表,每種錯誤 類型在此篇程式碼所有錯誤中佔的百分比E /x),如此學生便可清楚看出自己的ki 弱點在哪,並在往後進行弱點的加強。
圖3-13:學生個人單一程式碼的錯誤類型分佈圖
E :表示該學生在程式碼(k)所犯錯誤類型(i)的錯誤累積次數,(如:ki E 代表該k1
學生在第一個錯誤類型的累積次數;其中 i 表錯誤類型的種類(i=1~34),k 代表哪 篇程式碼(k=1~p;p 代表資料庫中,所有程式碼的個數),x 則代表該學生在該程 式碼中所有錯誤類型犯錯次數的總合。
3.4.2 類似錯誤修正練習
記資訊後,註記分析器(Annotation Analyzer)便會到資料庫內,去比對找出其它程 式碼中錯誤類型的分佈跟程式碼(k)最類似的一篇(q),讓學生作相似錯誤類型的
修正練習;其概念,則是利用程式碼內錯誤類型所構成的多維空間向量,去做兩 篇程式碼錯誤類型相似度的比較;首先,透過資料庫去找出程式碼(k)中每種錯誤 類型的錯誤累積次數E ,其中 i 代表何種錯誤類型(i 從 1~34),而 k 則代表哪一ki 個程式碼;例如:Ek1 代表在程式碼(k)中,錯誤類型 1 的錯誤累積次數。因此可 將程式碼(k)在每種錯誤類型的累積次數E ,集合成為程式碼(k)的錯誤類型向ki 量,再經過正規化的結果就如下所示(其中 x 及 y 分別代表在程式碼 k 及程式碼 q 中,所有錯誤類型犯錯次數的總合):
程式碼k的錯誤類型向量=(
x Ek1
, x Ek 2
,…, x Ek 34
)
然後,再與資料庫中其他程式碼的錯誤類型向量進行相似度的比對,若資料 庫中另一篇程式碼q的錯誤類型向量為:
程式碼 q 的錯誤類型向量=(
y Eq1
, y Eq 2
,…, y Ek 34
) 則程式碼k與程式碼q其錯誤類型的相似度(S)的計算為:
相似度 S(D,Q)=
∑ ∑
∑
= =
=
⎟⎟⎠
⎜⎜ ⎞
⎝
⋅ ⎛
⎟⎠
⎜ ⎞
⎝
⎛
⋅
34 1
34 1 2 2 34
1
i i
ki qi
qi i
ki
y E x
E
y E x E
而相似度的值S,即代表兩篇文章其誤類型向量所形成的cosθ ,cosθ 越大 代表兩個程式碼的錯誤類型分佈越相像;因此,我們可利用這個機制找出資料庫 內跟程式碼(k)錯誤類型分佈最類似的程式碼(q)讓學生作錯誤類型的修正練習,
在練習完後,可以上下視窗的方式,比對原本在q程式碼上所加的註記,看自己 的修正是否正確,如下圖3-14所示,上面的視窗,所顯示的是系統利用相似度的
算法所找出來的原始程式碼,當使用者修正完該篇程式碼後,可以觀看下方的視 窗,下方視窗所顯示的就是其他人在該篇程式碼所做的註記。
圖3-14:錯誤修正練習視窗
3.4.3 學生個人歷史錯誤類型之分析
學生個人歷史錯誤類型之統計分析跟單一程式碼錯誤類型分析之不同處,在 於它所分析的是個別單一學生在過去所撰寫的程式碼中,在每個錯誤類型所犯錯
因此在這裡,註記分析器(Annotation Analyzer)會到資料庫內,將某個學生其所有
程式碼中的每一種錯誤類型的犯錯次數作統計,並除以該學生所作程式碼的篇 數,因此我們可以得知該學生過去在每一種錯誤類型所犯錯的頻率(E )為何,然ij
後將每一種錯誤類型的犯錯頻率以長條圖的方式呈現到分析結果顯示畫面 (Analyzed Result Viewer),如圖 3-15 所示,(左邊欄位代表該學生所犯的錯誤類 型,右邊欄位代表該位學生過去在每個錯誤類型所犯錯的頻率E )。而ij E 的算法ij 如下所示:
個別學生(j)在種錯誤類型(i)的犯錯頻率(E )=ij m
E
m
k
∑
kij=1 ,i=1~34
E :個別學生(j)在種錯誤類型(i)的犯錯頻率 ij
E :代表學生(kij j)在其程式碼(k)內,其在錯誤類型(i)的犯錯次數 m:學生(j)所作程式碼的累積個數
圖3-15:學生個人歷史錯誤類型統計分佈圖
3.4.4 學生個人學習狀況之分析
註記分析器(Annotation Analyzer)會根據教師的要求,去分析某一學生在每一
篇程式碼所犯的錯誤類型次數,是否隨著每次相似錯誤修正練習,而有改善的情 況;其分析的機制,主要是拿該學生某一篇在錯誤類型(i)的犯錯次數,跟前一篇 錯誤類型(i)的犯錯次數做比較,看犯錯減少或增加的幅度為何,在此稱為每一錯 誤類型的進步幅度(Improvement Rate , IR),而每兩篇文章在錯誤類型(i)的進步 幅度(IR ),所集合的點,可將其描繪成一個折線圖,並呈現到分析結果顯示畫ki 面(Analyzed Result Viewer)給教師看,如此教師就可以看出該學生的學習狀況(在 每一錯誤類型的犯錯上,是否有進步),如圖3-16所示(縱軸代表該學生在第i種錯
IR值), IR 的算式如下所示: ki
) / /
/(
) / /
( , − +1, +1 , + +1, +1
= ki k k i k ki k k i k
ki E x E x E x E x
IR ,其中 i=1~34;k=1~m-1
i :代表為第 i 種錯誤類型, i =1…34
k:代表該錯誤類型所算出來的第幾個 IR 值,k=1,2,…,m-1。(m 代表該學生總共
有幾篇程式碼)
IR :代表在第 i 個錯誤類型中,算出來的第 k 個 IR 值(即第 k+1 篇及第 k 篇算 ki
出來的 IR 值)
i
Ek+1,:代表該學生在第 k+1 篇的程式碼中,該學生在錯誤類型(i)的犯錯次數
i
Ek, :代表第 k+1 篇的前一篇其程式碼(第 k 篇)中,該學生在錯誤類型(i)的犯 錯次數
xk+1及 xk:分別代表在第k+1 篇及第 k 篇中所有錯誤類型犯錯次數的總合
圖3-16:學生個人學習狀況之分析圖
3.4.5 所有學生在單一程式碼錯誤類型之分析
該分析跟學生個人單一程式碼錯誤類型唯一不同的地方是,註記分析器
(Annotation Analyzer)是找出所有學生在某一個程式碼主題,出現的錯誤類型,
以及各錯誤類型佔所有錯誤中的百分比, 然後再以長條圖的方式呈現到分析結 果顯示畫面(Analyzed Result Viewer)給教師觀看,如下圖3-17所示(左邊欄位代表
系統內定的所有錯誤類型種類,右邊欄位則代表所有學生其每種錯誤類型在所有 錯誤中佔的百分比(
∑
= n
j kij
x E
1
),如此老師便可看出所有學生在這個程式碼主題裡 面,哪些觀念是比較不清楚的。
圖3-17:所有學生在單一程式碼主題之錯誤類型分佈圖
3.4.6 所有學生錯誤類型之分析
註記分析器(Annotation Analyzer)會根據教師的需求,將每個學生在每種錯誤 類型的犯錯頻率(E )作加總除以所有學生人數(n)後,便可得知所有學生在每一ij 種錯誤類型的平均犯錯率(EE )為何,然後再將每一種錯誤類型的平均犯錯率以i 長條圖的方式呈現至分析結果顯示畫面(Analyzed Result Viewer),如圖3-18所示 (左邊的欄位代表該學生所犯的錯誤類型,右邊的欄位代表所有學生在每個錯誤 類型所發生的平均犯錯率EE ),而所有學生在每一種錯誤類型的平均犯錯率i (EE )其算法如下所示: i
所有學生在錯誤類型(i)的平均犯錯次數(EE )= i n
E
n
j
∑
ij=1
j:代表哪個學生
EE :所有學生在錯誤類型(i)的平均犯錯次數 i
E :學生(j)在錯誤類型(i)的犯錯頻率 ij
n:學生總人數
圖3-18:所有學生錯誤類型統計分佈圖