第五章 結論與建議
第二節 建議
壹、 教學建議 一、加強除錯的教學
學生雖然不喜歡除錯,但在除錯成功後都會感到成就感以及非常開心。從問 卷開放式調查中發現學生認為除錯最困難是不知道錯誤在哪裡、不知道如何修改 錯誤,從研究中發現學生缺乏預完成程式的知識、除錯的方法,和程式錯誤的知 識,如果教師能藉由教學設計加強學生除錯的方法與知識,不僅能夠提升學生的 除錯技能,也能增加學生學習的成就感,亦可以增加他們勇於面對問題進而解決 問題,反而能增加他們學習的正向態度。
貳、 對未來研究建議
一、增加學生樣本數,重複本研究
由於本研究採兩班做為受試研究對象,以量化統計輔以質性資料的分析,以 個案的方式觀察八位學生除錯過程,學生樣本數較少,本研究只歸納八位學生共 通性的除錯行為,並未深入比較高、中、低成就學生的除錯行為是否有不同,因 此建議未來的研究可以擴大學生的樣本數,並以質性資料如除錯行為觀察表深入 探討進行分析,更能完整分析學生除錯行為。
二、應依程式設計的概念設計不同類型的除錯題目
本研究的除錯題目僅針對受試學生所學過的課程內容來設計,此範圍涵蓋變
43
數、迴圈、判斷、副程式等內容,因除錯題目僅有三題,並非涵蓋所有的程式概 念,未來研究可以增加陣列、遞迴等更具深度的內容,或者考慮設計不同的程式 概念為獨立的除錯題目,研究是否會有不同的除錯行為,以全面瞭解學生除錯的 情形。
44
45
參考文獻
中華民國電腦技能基金會(2009)。Visual Basic 2008 實力養成曁評量。台北市:
碁峰資訊。
尹玫君(1991)。電腦程式設計能力與認知能力相關之研究。臺南師院學報,24。
李啟龍和俞冠廷(2008)。Visual Basic 2008 程式設計 16 堂特訓。台北市:文魁 資訊股份有限公司。
Ahmadzadeh, M., Elliman, D., & Higgins, C. (2005). An analysis of patterns of debugging among novice computer science students. SIGCSE Bulletin, 37(3), 84-88. doi: 10.1145/1151954.1067472
Bayman, P., & Mayer, R. E. (1988). Using conceptual models to teach BASIC
computer programming. Journal of Educational Psychology, 80(3), 291-298.
Bonar, J., & Soloway, E. (1985). Preprogramming knowledge: a major source of misconceptions in novice programmers. Human-Computer Interaction, 1(2), 133-161.
46
Chmiel, R., & Loui, M. C. (2004). Debugging: from novice to expert. SIGCSE Bulletin, 36(1), 17-21.
Decasse, M., & Emde, A. M. (1988). A review of automated debugging systems:
knowledge, strategies and techniques. Proceedings of the 10th International Conference on Software engineering, 162-171, Singapore.
Ellinger, H. (2003). A nature sense of algorithm: Children should learn computer programming as a basic skill. Retrieved Febuary 13, 2009, from
http://hunter.ellinger.org/education/ProgrammingForChildren.htm.
Fitzgerald, S., Lewandowski, G., McCauley, R., Murphy, L., Simon, B., Thomas, L.,
& Zander, C. (2008). Debugging: Finding, Fixing and Flailing, a
Multi-Institutional Study of Novice Debuggers. Computer Science Education, 18(2), 93-116.
Gal-Ezer, J., & Harel, D. (1998). What (else) should CS educators know?
Communications of the ACM, 41(9), 77-84.
Garry, L. W., & Marcos, P. S. (2002). A theory of the relationship between cognitive requirements of computer programming languages and programmers'
cognitive characteristics. Journal of Information Systems Education, 13(1), 59.
Gugerty, L., & Olson, G. (1986). Debugging by skilled and novice programmers.
ACM SIGCHI Bulletin, 17(4), 171-174.
Hartmann, W., Nievergelt, J., & Reichert, R. (2001). Kara, finite state machines, and the case for programming as part of general education. Proceedings of the 2001 IEEE Symposia on Human-Centric Computing Languages and Environments, 135-141, Stresa, Italy.
Hughes, M. C., Jadud, M. C., & Rodrigo, M. M. T. (2010). String formatting considered harmful for novice programmers. Computer Science Education, 20(3), 201-228. doi: 10.1080/08993408.2010.507335
47
Jadud, M. C. (2006). Methods and tools for exploring novice compilation behaviour.
Paper presented at the Proceedings of the second international workshop on Computing education research, Canterbury, United Kingdom.
Jeffries, R. (1982). A comparison of the debugging behavior of expert and novice programmers. Paper presented at the American Education Research Association Annual Meeting, New York.
Katz, I. R., & Anderson, J. R. (1987). Debugging: an analysis of bug-location strategies. Human-Computer Interaction, 3(4), 351-399.
Ko, A. J., Myers, B. A., & Aung, H. H. (2004). Six Learning Barriers in End-User Programming Systems. Paper presented at the Proceedings of the 2004 IEEE Symposium on Visual Languages - Human Centric Computing.
Lahtinen, E., Ala-Mutka, K., & Järvinen, H.-M. (2005). A study of the difficulties of novice programmers. SIGCSE Bulletin, 37(3), 14-18.
Marie-H, Nienaltowski, n., Pedroni, M., & Meyer, B. (2008). Compiler error messages: what can help novices? SIGCSE Bulletin, 40(1), 168-172. doi:
10.1145/1352322.1352192
Martin, J. (1999). Teaching with Visual BASIC. Journal of Computer Science Education, 13(1), 12-15.
McCauley, R., Fitzgerald, S., Lewandowski, G., Murphy, L., Simon, B., Thomas, L.,
& Zander, C. (2008). Debugging: a review of the literature from an educational perspective. Computer Science Education, 18, 67-92.
Murphy, L., Lewandowski, G., McCauley, R., Simon, B., Thomas, L., & Zander, C.
(2008). Debugging: the good, the bad, and the quirky -- a qualitative analysis of novices' strategies. SIGCSE Bulletin, 40(1), 163-167. doi:
10.1145/1352322.1352191
Ousterhout, J. K. (1998). Scripting: higher level programming for the 21st Century.
48
Computer, 31(3), 23-30.
Parsons, D., & Haden, P. (2007). Programming osmosis: Knowledge transfer from imperative to visual programming environments. Proceedings of The
Twentieth Annual National Advisory Committee on Computing Qualifications Conference, 209-215, Hamilton, New Zealand.
Perkins, D., Hancock, C., Hobbs, R., Martin, F., & Simmons, R. (1986). Conditions of learning in novice programmers. Journal of Educational Computing Research, 2(1), 37-55.
Perkins, D., & Martin, F. (1986). Fragile knowledge and neglected strategies in novice programmers. Empirical studies of programmers, Ablex, Norwood, NJ (1986), 213–229.
Powers, K., Gross, P., Cooper, S., McNally, M., Goldman, K. J., Proulx, V., & Carlisle, M. (2006). Tools for teaching introductory programming: what works?
SIGCSE Bulletin, 38(1), 560-561. doi: 10.1145/1124706.1121514 Putnam, R., Sleeman, D., Baxter, J., & Kuspa, L. (1986). A summary of
misconceptions of high school basic programmers. Journal of Educational Computing Research, 2(4), 459-472.
Resnick, M., Maloney, J., Hernandez, A., Rusk, N., Eastmond, E., Brennan, K., . . . Silverman, B. (2009). Scratch: Programming for Everyone. Communications of the ACM, 52(11), 60-67.
Robins, A., Rountree, J., & Rountree, N. (2003). Learning and Teaching Programming:
A Review and Discussion. Computer Science Education, 13(2), 137-172. doi:
10.1076/csed.13.2.137.14200
Shneiderman, B. (1980). Software psychology: Human factors in computer and information systems (Winthrop computer systems series), Winthrop Publishers.
49
Simon, B., Bouvier, D., Chen, T., Lewandowski, G., McCartney, R., & Sanders, K.
(2008). Common sense computing (episode 4): debugging. Computer Science Education, 18(2), 117-133.
Spohrer, J. G., & Soloway, E. (1986). Analyzing the high frequency bugs in novice programs. Paper presented at the Papers presented at the first workshop on empirical studies of programmers on Empirical studies of programmers, Washington, D.C., United States.
Spohrer, J. C., Soloway, E., & Pope, E. (1985). A Goal/Plan Analysis of Buggy Pascal Programs. Human–Computer Interaction, 1(2), 163-207. doi:
10.1207/s15327051hci0102_4
Tucker, A., Deek, F., Jones, J., McCowan, D., Stephenson, C., & Verno, A. (2004). A model curriculum for K-12 computer science. Retrieved February 13, 2009, from
http://www.csta.acm.org/Curriculum/sub/CurrFiles/K-12ModelCurr2ndEd.pdf
Valente, J. (1995). Logo as a window into the mind. Logo Update, 4(1), 1-4.
Retrieved February 13, 2009, from
http://el.media.mit.edu/logo-foundation/pubs/logoupdate/v2004n2001.html
50
51
52
53
附錄二 除錯題目
列出區間內三的倍數
題目說明:
輸入「起始值」與「終止值」,按下「列出區間內所有三的倍數」按鈕後,會列 出所有 3 的倍數。
屬性值設定:
物件 屬性 屬性值
Label1 Text 起始值
Label2 Text 終止值
Button1 Text 列出區間內三的倍數
Textbox3 (Name) txtOutput
54
交換變數值
題目說明:
依序按下「傳值呼叫」與「傳址呼叫」按鈕後,會出現下圖的運算結果。
屬性值設定:
物件 屬性 屬性值
Button1 Text 傳值呼叫
Button2 Text 傳址呼叫
55
速食店點餐 題目說明:
請完成速食店點餐的程式,依照點選套餐的內容,並輸入數量算出金額。
1. 每種套餐可選擇一項主餐、一項副餐,和一項飲料,現在的表單無法正確的 選擇,請修正為正確的表單。
2. 選到副餐為薯條時,可以再選擇「薯條加大」的五元升級方案,若選到其他 種類的副餐,則須將「薯條加大」的 CheckBox 控制項設為不可核取
3. 選到飲料為可樂時,可以再選擇「可樂加大」的五元升級方案,若選到其他 種類的飲料,則須將「可樂加大」的 CheckBox 控制項設為不可核取
4. 按「結帳」按鈕時,顯示「謝謝光臨」的訊息 屬性值設定:
56
物件 屬性 屬性值
RadioButton1 (Name) rbA1
Text 1 號餐:兩塊雞套餐(129 元)
RadioButton2 (Name) rbA2
Text 2 號餐:雙層漢堡套餐(99 元)
RadioButton3 (Name) rbB1
Text 薯條
RadioButton4 (Name) rbB2
Text 玉米
RadioButton5 (Name) rbB3
Text 沙拉
RadioButton6 (Name) rbC1
Text 可樂
RadioButton7 (Name) rbC2
Text 紅茶
RadioButton8 (Name) rbC3
Text 雪碧
CheckBox1 (Name) cbUPF
Text 薯條加大
CheckBox2 (Name) cbUPD
Text 可樂加大
TextBox1 (Name) txtPrice TextBox2 (Name) txtQty TextBox3 (Name) txtAmt Button1 (Name) Btn_GO
57
附錄三 除錯行為觀察表
除錯行為觀察表 題目
是否完成 是 □ 否 □ 總時間
學生編號
時間 行為 編碼
58
1:00 切換至表單設計,察看 ExEOuEpuE EexEbox 屬性
值 R4
buEEon1_click 程式區段 R2
3:45 編輯程式碼,剪下程式碼把程式碼移置 buEEon1
click 的程式區段 E1
4:08 執行程式 ((輸入 2,50 測試)程式輸出錯誤) T1
59
察看輸出結果
4:37 察看程式碼 (迴圈部分) R2
4:58 編輯程式碼,修改 ExEOuEpuE.EexE &=i & “ ” 修改
成 ExEOuEpuE.EexE &= ExEOuEpuE.EexE & “ ” E1 5:09 執行程式 ((輸入 2,50 測試)程式輸出錯誤) T1
察看輸出結果
5:31 察看程式碼 R2
5:33 編輯程式碼,刪除 ExEOuEpuE.EexE &=
ExEOuEpuE.EexE & “ ” E1 5:37 執行程式 ((輸入 2,50 測試)程式輸出錯誤) T1
察看輸出結果
5:46 編輯程式碼,寫入 ExEOuEpuE.EexE =
ExEOuEpuE.EexE & i 修改成 ExEOuEpuE.EexE &=
ExEOuEpuE.EexE & i & “ ”
E1
5:52 執行程式 (輸入 2,50 測試) T1
6:15 停止 成功除錯
60 4:43 編輯程式碼,修改 txtOutput.Text = txtOutput.Text
& i 變成 c = txtOutput.Text & i
E1
4:55 察看程式碼,察看 txtOutput 那行 R2 5:13 編輯程式碼,復原 txtOutput.Text = txtOutput.Text
& i
61
mod 3 <> 0 then i+1 and txtOutput.Text=””
E1
10:13 察看程式碼 R2
11:48 編輯程式碼,修改 if I mod 3 <> 0 then i+1 and txtOutput.Text=””變成 if I mod 3 <> 0 then txtOutput.Text=””
E1
12:03 察看程式碼 R2
12:21 編輯程式碼,寫入 if 敘述 end if 程式碼 E1 12:26 編輯程式碼,txtOutput.Text=””移至 if 敘述裡面 E1 12:43 開啟”記事本”,複製 txtOutput.Text=txtOutput.Text O1
13:00 察看程式碼 R2
13:24 編輯程式碼,在 if 敘述中寫入 else if 程式碼 E1 13:46 開啟”記事本”,複製 txtOutput.Text=txtOutput.Text O1 13:54 編輯程式碼,在 if 敘述 else if 中貼上
txtOutput.Text=txtOutput.Text 程式碼
E1
62
3 <> 0 then txtOutput.Text=”” and i=1
15:58 編輯程式碼,刪除在 if 敘述中 else if 程式碼 E1 txtOutput.Text=”” and i=i+1
E1
19:34 察看程式碼 R2
20:00 停止 未成功除錯
63
64
65
66
67