第五章 結論與建議
第二節 建議
根據本研究過程以及研究結果,對於未來類似研究或教學有以下建議。
一、延長機器人程式設計教學活動的時間
從第一階段的學習活動問卷中發現,學生對於使用機器人程式設計的態度 相當正向,但是對演算法式思考及程式除錯能力的信心不足。從課堂觀察發現 可能原因為教學活動時間不足,尤其越到後面的單元學生做完習題的比例越低 但仍可能是受到學生本身課業壓力之影響,因此建議未來研究者可以從延長教 學時間做起,利用機器人帶給學生的成就感、趣味性和挑戰性,進而增強學生 學習程式設計的信心。
二、加強學習機器人程式設計與傳統程式設計間的銜接課程
本研究受限於教學實驗時間,在機器人轉換回傳統程式教學之銜接教材及 第二階段傳統程式設計教材之時數較短。學生在開放式問卷提到「感覺上像是 在學二種不同的東西(指機器人程式設計和傳統程式設計)」,可能因為銜接課 程時間過短而造成學生這種想法。研究者認為機器人轉換到傳統程式設計,應 有足夠的時間讓學生從較具象的思考轉換到較抽象的思考模式,因此建議未來 研究加強機器人程式設計與傳統程式設計間的銜接課程來改善此情況。
三、設計有助於學生同時建立程式與領域心智模型的教學模式
本研究發現使用機器人的學生傾向形成領域模型,而傳統程式設計的學生 比較傾向形成程式模型。而最佳的程式理解是能運用二種模型來解釋程式,若 是能以機器人能形成領域模型之特性,設計有助於學生同時建立程式與領域心 智模型的教學模式,對於學生學習程式設計應能有所幫助。
參考文獻
曾義智(2007):應用機器人於程式設計教學─實體機器人與模擬軟體使用成效 比較。未出版碩士論文,國立臺灣師範大學資料教育研究所,台北市。
Astrachan, O. (1998). Concrete teaching: Hooks and props in teaching programming, Proceedings of ITiCSE 1998, 21-24.
Ben-Ari, M. (2001). Constructivism in computer science education. Journal of Computers in Mathematics and Science Teaching, 20(1), 45-73.
Cañas J. J., Bajo M. T., Gonzalov P. (1994). Mental models and computer programming. International Journal of Human-Computer Studies, 40(5), 795-811.
Costelloe, E. (2004). Teaching Programming The State of the Art. CRITE Technical Report.
Corritore, C. L. & Wiedenbeck, S. (1999). Mental representation of expert
procedural and object-oriented programmers in a software maintenance task.
International Journal of Human-Computer Studies, 50(1), 61-83.
Dehnadi, S. (2006). Testing Programming Aptitude. Proceegings of the 18th Annual Woekshop of the Psychology of Programming Interest Group, 22-37. Brighton, UK.
Dehnadi, S., & Bornat, R. (2006). The camel has two humps, www.cs.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf.
Duke, R., Salzman, E., Burmeister, J., Poon, J., & Murray, L. (2000) Teaching programming to beginners – choosing the language is just the first step.
Proceedings of the Australasian conference on Computing education, 79-86.
Melbourne, Australia.
Er, M. C. (1995). Process frame: a cognitive device for recursion comprehension.
Computers and Education, 24(1), 31-36.
Fagin, B. S., Merkle, L. D., & Eggers, T. W. (2001). Teaching computer science with robotics using Ada/Mindstorms 2.0. ACM SIGAda Ada Letters, XXI(4),73-78.
Fagin, B., Merkle, L. (2003). Mesuring the effectiveness of robots in teaching computer science. ACM SIGCSE Bulletin, 35(1), 307-311.
Galloway, J. P. (1999). The value of programming in beginning educational computing. Proceedings of Society for Information Technology and Teacher Education International Conference, 376-381. February 28-March 4, 1999, San Antonio, TX, USA.
Goldweber, M., Congdon, C., Fagin, B., Hwang. D., & Klassner, F. (2001). The use of robots in the undergraduate curriculum, ACM SIGCSE Bulletin, 33(1), 404-405.
Götschi, T., Sanders, I., & Galpin, V. (2003). Mental models of recrusion. ACM SIGCSE Bulletin, 35(1), 346-350.
Haberman, B. (2004). How learning logic programming affects recursion comprehension. Computer Science Education, 14(1), 37-53.
Jacobsen, C. L. & Jadud, M. C. (2005). Towards concrete concurrency: occam-pi on the LEGO Mindstorms. ACM SIGCSE Bulletin, 37(1), 431-435.
Johnson-Laird, P. N. (1983). Mental Models. Cambrige University Press, Cambridge London.
Kahney, H. (1983). What do novice programmers know about recursion.
Proceedings of the SIGCHI conference on Human Factors in Computing Systems, 235-239. Boston, MA, USA.
Klassner, F. (2002). A case study of LEGO Mindstorms'™ suitability for artificial intelligence and robotics courses at the college level, Technical Symposium on Computer Science Education Proceedings of the 33rd SIGCSE technical symposium on Computer science education, 8-12.
Linn, M. C., & Clancy, M. J. (1992). The case for case studies of programming problems. Communications of the ACM, 35(3). 121-132.
Lui, A. K., Kwan, R., Poon, M., Cheung, Y. H. Y. (2004). Saving weak programming student: applying constructivism in a first programming course. ACM SIGCSE Bulletin, 36(2), 72-76.
Ma, L., Ferguson, J., Roper, M., & Wood, M. (2006). Investigating novice
programmers' mental models. Technical report, the EFoCS Group, University of Strathclyde, http://www.cis.strath.ac.uk/~linxiao/TechReport2006.doc.
Ma, L., Ferguson, J., Roper, M., & Wood, M. (2007). Investigating the viability of mental models held by novice programmers. ACM SIGCSE Bulletin, 39(1), 499-503.
Mannila, L., Peltomaki, M., & Salakoski, T. (2006) What about a simple language?
Analyzing the difficulties in learning to program. Computer science education, 16(3), 211-227.
McNerney, T. S. (2004). From turtles to tangible programming bricks: explorations in physical language design. Personal and Ubiquitous Computing, 8(5), 326-337.
Myers, B. A. (1986). Visual programming, programming by example, and program visualization a taxonomy. Proceedings of the SIGCHI conference on Human factors in computing systems, 59-66. Boston, Massachusetts, United States Papert, S. (1980). Mindstorms: Children, computers, and powerful ideas. New York:
Basic Books.
Pennington, N., (1987). Stimulus structures and mental representations in expert comprehension of compuer programs. Cognitive psychology, 19(3), 295-341.
Ramalingam, V., LaBelle, D.,& Wiedenbeck, S. (2004). Self-efficacy and mental models in learning to program. ACM SIGCSE Bulletin, 36(3), 171-175.
Soloway, E. (1986). Learning to program = Learning to construct mechanisms and explanations. Communications of the ACM, 29(9), 850-858.
Sanders, I., Galpin, V., & Götschi, T. (2006). Mental models of recursion.
Proceedings of the 11th annual SIGCSE congerence on Innovation and technology in computer science education, June 26-28, 2006, Bologna, Italy.
Wulf, T. (2005). Constructivist approaches for teaching computer programming.
Proceedings of the 6th conference on Information technology education, 245-248. Newark, NJ, USA.
Wiedenbeck, S. & Ramalingam, V. (1999). Novice comprehension of small programs written in the procedural and object-oriented styles. International Journal of Human-Computer Studies, 51(1), 71-87.
Zaidman, M. (2004). Teaching defensive programming in JAVA. Journal of Computing Sciences in Colleges, 19(3), 33-43.
Zmuda, M. & Hatch, M. (2007). Scheduling topics for improved student comprehension of recursion. Computers and Education, 48(2), 318-328.
附 錄
附錄一 活動問卷 問 卷(第一階段傳統組)
以下問題請你就過去幾週的學習活動表答你的看法。(請各位同學用「
」
選同意程度)性別:男□ 女□
問 題 非常 同意 同意 普通 不同意 不同意非常 1. 我能夠瞭解學習活動中的 Java 指令
(如:int x、while、if-else、counter = counter +1 等) □ □ □ □ □ 2. 由閱讀程式碼我就可以想像出程式可能的執行結果 □ □ □ □ □ 3. 若程式出錯了,我可以自己找出程式錯誤的地方 □ □ □ □ □ 4. 看了程式輸出結果,我比較知道程式的錯誤在哪裡 □ □ □ □ □
5. 我能夠想出問題的解法 □ □ □ □ □
6. 我能將問題解法寫成程式碼 □ □ □ □ □
7. 看到我的程式順利執行,我覺得很有成就感 □ □ □ □ □ 8. 碰到有點難度的問題我會想要嘗試解題 □ □ □ □ □
9. 我覺得程式設計很好玩 □ □ □ □ □
10. 我覺得程式設計學習活動很有挑戰性 □ □ □ □ □
11. 我希望學習更多的程式設計 □ □ □ □ □
問 卷(第一階段機器人組)
以下問題請你就過去幾週的學習活動表答你的看法。(請各位同學用「
」
選同意程度)性別:男□ 女□
問 題 非常 同意 同意 普通 不同意 不同意非常 1.我能夠瞭解學習活動中機器車相關的指令
(如:car.travel()、car.rotate()、car.touch_sensor()等) □ □ □ □ □ 2.我能夠瞭解學習活動中的 Java 指令
(如:int x、while、if-else、counter = counter +1 等) □ □ □ □ □ 3.由閱讀程式碼我就可以想像出機器車可能的執行動作 □ □ □ □ □
4.我可以自己找出程式的錯誤 □ □ □ □ □
5.看了機器車執行我的程式後,我比較知道程式的錯誤在哪裡 □ □ □ □ □
6.我能夠想出問題的解法 □ □ □ □ □
7.我能將解法寫成程式碼 □ □ □ □ □
8.看到機器車執行我的程式,我覺得很有成就感 □ □ □ □ □
9.碰到有點難度的題目我會想要嘗試解題 □ □ □ □ □
10.我覺得機器車程式設計很好玩 □ □ □ □ □
11.我覺得機器車程式設計學習活動很有挑戰性 □ □ □ □ □
12.我希望學習更多的程式設計 □ □ □ □ □
程式設計學習活動問卷(第二階段傳統組)
各位同學:
為了瞭解本學期程式設計教學的實施情形,以做為未來教學的改善,請你忠實的回答下 面的問題。謝謝您的幫忙!
我的性別是: □男 □女
請分別就下列各題勾選您同意的程度
問 題 非常 同意 同意 普通 不同意 不同意非常
1.我能夠瞭解學習活動中的程式指令 □ □ □ □ □
2.我可以由程式碼想像程式的可能執行結果 □ □ □ □ □ 3.若程式出錯了,我可以自己找出錯誤的地方 □ □ □ □ □ 4.給我問題的解題步驟,我通常都可以寫出程式碼 □ □ □ □ □ 5.給我一個問題,我通常都可以想出解題步驟 □ □ □ □ □
6.做習題時,我常需要參考別組的程式碼 □ □ □ □ □
7.做習題時,我盡量嘗試著思考解題方法及程式碼 □ □ □ □ □
8.看到程式順利執行,我覺得很有成就感 □ □ □ □ □
9.我覺得程式設計很好玩 □ □ □ □ □
10.我覺得程式設計很有挑戰性 □ □ □ □ □
11.我希望學習更多的程式設計 □ □ □ □ □
1.我對本學期程式設計學習的感想:
程式設計學習活動問卷
各位同學:
為了瞭解本學期程式設計教學的實施情形,以做為未來教學的改善,請你忠實的回答下 面的問題。謝謝您的幫忙!
我的性別是: □男 □女
請分別就下列各題勾選您同意的程度
問 題 非常 同意 同意 普通 不同意 不同意非常
1.我能夠瞭解學習活動中的程式指令 □ □ □ □ □
2.我可以由程式碼想像程式的可能執行結果 □ □ □ □ □ 3.若程式出錯了,我可以自己找出錯誤的地方 □ □ □ □ □ 4.給我問題的解題步驟,我通常都可以寫出程式碼 □ □ □ □ □ 5.給我一個問題,我通常都可以想出解題步驟 □ □ □ □ □
6.做習題時,我常需要參考別組的程式碼 □ □ □ □ □
7.做習題時,我盡量嘗試著思考解題方法及程式碼 □ □ □ □ □
8.看到程式順利執行,我覺得很有成就感 □ □ □ □ □
9.我覺得程式設計很好玩 □ □ □ □ □
10.我覺得程式設計很有挑戰性 □ □ □ □ □
11.我希望學習更多的程式設計 □ □ □ □ □
12.之前的機器車程式設計與這幾週的程式設計,感覺上是相通的 □ □ □ □ □ 13.我比較喜歡之前的機器車程式設計學習活動 □ □ □ □ □
1.我對本學期程式設計學習的感想:
2.我覺得之前的機器車程式設計與這幾週的程式設計的差別是:
附錄二 課堂觀察記錄表
樂高程式設計教學實驗課堂觀察記錄表
組別: 日期: 月 日 教學單元: 觀察者:
● 組別說明:LM 實體組 / LMS 模擬組 / ALL 實體加模擬組 / TRA 傳統組
● 請將觀察到的優缺點列舉出來並盡量舉例說明
● 存檔請依【組別_觀察日期 y/m/d_觀察者】存檔。例如:【LM_080324_亞錚_觀察記錄.doc】
一、教學流程(請簡述本堂教學過程及各活動進行時間)
二、學習情況
◎ 上課整體氣氛
◎ 學生常碰到的困難(觀念理解方面或是解題方面)
三、工具使用(依組別不同記錄,若沒用到的組別就寫「無」)
◎ eclipse 程式編輯器
◎ 模擬軟體
◎ 機器車
四、其他建議
附錄三 第一階段講義
單元一 樂高程式介紹(實體加模擬組)
1-1 樂高程式設計的步驟
在講解Eclipse 之前,我們首先要知道撰寫樂高程式的三個步驟:
1. 撰寫程式:在此我們以 Eclipse 來撰寫樂高程式,畫面的右邊就是程式的編輯區
2. 編譯程式:所謂「編譯」就是將我們寫的程式,轉換成電腦看得懂的機器語言。在 Eclipse 中只要按下「存檔」程式就會自動完成編譯與存檔的動作。若是程式有錯誤,
也會在畫面下方出現錯誤的訊息。
3. 將程式傳輸到模擬軟體或機器車執行:在程式正確完成編譯後就可以將程式傳到模擬軟體 或機器車上執行。
1-2 Eclipse 的環境
以下我們以「Ex1」為例,帶領大家從開啟 Eclipse 到傳輸到模擬軟體及機器車做一次,
請各位同學跟著以下的步驟操作:
‧編輯程式
1. 點選桌面上 圖示,開啟編譯器。開啟後會看如下圖的視窗 班級:
座號:
姓名:
2. 以滑鼠點選兩下開啟欲編輯的檔案資料夾,請點選「Ex1」。開啟 Ex1 資料夾後,再以 滑鼠左鍵點選「預設套件」兩下,再接著用左鍵點選Ex1.java 兩下,這個就是我們要 編輯的java 檔案;Ex1.java 下方的 SmartCar.java 檔案是機器車的設定檔,在整個課程 中都不需要開啟。(如上圖○1)
3. Ex1.java 開啟以後,在編譯器右方會出現編輯區,兩條***線中間的部分,就是要撰寫 程式的地方。(如上圖○2)
4. 正在編輯的檔案,檔案標籤會呈現藍色。若編譯後尚未存檔,標籤會有一個*字號。(如
4. 正在編輯的檔案,檔案標籤會呈現藍色。若編譯後尚未存檔,標籤會有一個*字號。(如