A Programming Learning System for Beginners - A Completion Strategy Approach
這篇 Paper [1] 介紹了一個以 Completion Strategy 為中心的 Programming Learning System.
Paper 中對於 Completion Strategy 的說明如下 :
The completion strategy uses well-designed programs as basic programs to be completed,modified and extended. The completion strategy suggests that the learning contents or programming skills should exist in the well-designed programs. These model programs may be complete or incomplete, and it is students’duty to modify or extend the original model program.
說白一點其實 Completion Strategy 跟 Fill-In-The-Blanks 有點像. 最單純的一種就是克漏字填充, 讓你清楚知道前後文, 請你填出正確或是合理的句子. 在 Programming Learning 中當然就是特定的語法, 或是變數宣告, Method Call 等等. 當然也會有比較複雜的情況, 例如留下一整個 Method 的內容, 要你根據 Spec. 或是說明, 把特定的演算法在該 Method 中實現. 這又比較像是利用 Design by Contract [2] 先規劃好框框, 再請你完成內容.
再有一種情況則可能是請學生 Extend 特定的 Class 或是 Function. 例如可以利用 Observer Pattern, 請學生建構自己的 Observer, 而教師利用 Subject 送出 State Information 去測試. 我以前給大一學生出作業時也作過類似的事情. 在 Paper 的敘述中也提到 Modification 的情況, 可能請你把某個 Depth 很深的 Loop 利用 Recursive 改掉, 或是修改某個 Function 的運作等等.
不管是哪一種, 基本上都是特過特別的規劃, 使得學生在完成練習的同時, 可以知道 Program 運作的細節, 以及學習到特定的 Programming Skill & Experience. 而在單一題目之外, 需要考量的還有如何安排一系列相關的 Completed/Incompleted Problem 給學生, 同時藉由學生的學習情況, 動態決定下一個題目該如何選擇以及製作. ( 以下圖片均參考取用自 [1] )

如上圖, 此 Paper 所提出的系統中, 具備一個 Problem Database 儲存各種 Problems. 一個 Problem 由主體的文字敘述, 以及相對的 Solution 組成. Solution 通常又是以數個 Templates 依序組成., 如下圖表示 ( 正確來說下圖的例子是 Problem Extension, 不過跟 Problem 的格式是一樣的 ) . Templates 被收納在 Template Library 中. 一個 Template 其實是一個 Code Slice/Fragment, 但是把其中要給學生填入的部分事先作宣告, 而在一個 Templates 中也允許嵌入其他的 Templates. 如下圖所示, 在 Average Template中, 也利用了 Output Template.


在第一張圖中央的 Problem Generator 具有一個 Learning Operator, 負責根據 Evaluation 結果決定下一個題目是什麼. 其實這個部分以及 Problem 之間關聯性的設計, 是我覺得整個系統是否有效的關鍵之一, 但是 Paper 並沒有在此著墨太多, 畢竟這應該是屬於 Completion Strategy 本身的問題了. 但我認為如果把問題縮小到Programming Learning 的框框下, 其實還是有探討的空間, 只是可能無法得到一個完美的答案, 就像盧梭無法為愛彌兒設計一個完美的教育流程一樣.
References
[1] Kuo-En Cheng, Bea-Chu Chiao, Sei-Wan Chen, and Rong-Shue Hsiao, "A Programming Learning System for Beginners - A Completion Strategy Approach," IEEE Transactions on Education, vol.43, no.2, May 2000
[2] Bertrand Meyer, "Applying Design by Contract", IEEE Computer, vol.25, no.10, pp.40-51, October 1992
上午8:07 | 標籤: e-learning, paper review, programming learning, software testing |
This entry was posted on 上午8:07 and is filed under e-learning , paper review , programming learning , software testing . You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
訂閱:
張貼留言 (Atom)
0 意見:
張貼留言