• 沒有找到結果。

第五章 結論與建議

第二節 建議

本研究根據實驗教學所獲得之分析結果,提出下列建議以供相關研究參考。

一、 教材設計建議

(1) 教材設計應謹慎考慮教學時間掌握,保留充裕時間讓學生進行實作,讓學 生可以在沒有時間壓力下完成指定練習

(2) 教材中應明確列出實作的步驟,讓學生能清楚知道自己該做些什麼。

二、 課程實施建議

(1) 因為人力、教學現場、教學時間等限制,本研究的實驗教學時間為四週,

建議未來可延長實驗教學時間,程式設計課程需要長時間的練習,若能給 予學習者較長時間的訓練,學習者能有較好的學習成效。

(2) 若能有專任師資協助進行教學,應能排除教學者對學習成效的影響。

三、 未來研究建議

建議未來研究可針對小範圍之程式設計概念設計學習教材,探討特定程式 設計概念的學習成效。

參考文獻

吳正己、何榮桂 (民 87):高級中學新訂電腦課程的內涵與特色。科學教育月刊,208,

26-32。

邱貴發(民 85)。八五級暑研所資訊教學專題彙集。國立台灣師範大學資訊教育研 究所。

陳宏煒(民 92):高中電腦課程實施現況調查。國立臺灣師範大學,臺北市。

陳麗如(民 90)。NETS.S 對中小學學生資訊基本能力發展的啟示。資訊與教育雜 誌,85 期,29-44。

黃世隆(民 93)。應用電腦樂高輔助高中生程式設計學習之行動研究。國立臺灣師 範大學,臺北市。

羅漢村(民 92)。自我監控活動對高中生 If 敘述程式設計學習成效之影響。國立臺 灣師範大學,臺北市。

Askar, P., Davenport, D. (2009). An investgation of factors related to self-efficacy for Java programming among engineering students. The Turkish Online Journal of

Educational Technology, 8(3), 26-32.

Au, W. K., Horton, J., & Ryba, K. (1987). Logo, Teacher intervention and the development of thinking skills. The Computing Teacher, 15(3), 12-16.

Au, W. K., & Leung, J. P. (1991). Problem solving, instructional methods and LOGO programming. Journal of Educational Computing Research, 7(4), 455-467.

Bandura, A. (1986), Social foundations of thought and action: A social cognitive theory, Prentice Hall, Englewood Cliffs, NJ.

Bayliss, J., & Strout, S. (2006) Games as a "flavor" of CS1. SIGCSE 2006. ACM Press, New York, NY, 500-504.

Becker, K. (2001). Teaching with games: The minesweeper and asteroids experience.

Journal of Computing Sciences in Colleges, 17(2), 23–33.

Becker, K., & Parker, J.R. (2005). All I ever needed to know about programming, I learned from re-writing classic Arcade games. Paper presented at Future Play, The international conference on the future of game design and technology, October 13–15, East Lansing, MI. Retrieved from

http://dspacel.acs.ucalgary.ca/bitstream/1880/46707/1/All_I_2005.pdf

Brown, M. H. Algorithm Animation. MIT Press, Cambridge, Massachussets, (1988).

Brusilovsky, P., Calabrese, E., Hvorecky, J., Kouchnirenko, A., and Miller, P. (1997) Mini-languages: A Way to Learn Programming Principles. Education and

Information Technologies 2(1), pp. 65-83.

Chaffin, A., Doran, K., Hicks, D., & Barnes, T. (2009). Experimental evaluation of teaching recursion in a video game. In Sandbox ’09: Proceedings of the 2009 ACM

SIGGRAPH Symposium on Video Games (pp. 79–86). ACM: New York.

Cliburn, D. (2006). The effectiveness of games as assignments in an introductory programming course. In Proceedings of the 36th

Annual ASEE/IEEE Frontiers in Education Conference(pp. 6–10). Piscataway, NJ: IEEE Press.

Cliburn, D.C., & Miller, S.M. (2008). Games, stories, or something more traditional: The types of assignments college students prefer. In Proceedings of the 39th

annual SIGCSE technical symposium on computer science education (pp. 138–142). New

York: ACM Press.

Cooper, S., Dann, W., & Pausch, R. (2000) Alice: A 3-D tool for introductory programming concepts. In Proceedings of the 5th Annual CCSC Northeastern

Conference 2000, Ramapo, NJ, April, 28-29, 2000.

Crosby, M. Stelovsky, J. (1989). Subject Differences in the Reading of Computer Algorithms. Designing and Using Human-Computer Interfaces and

Knowledge-Based Systems, Elsevier.

Deek, F. P., Kimmel, H., & McHugh, J. A. (1998). Pedagogical changes in the delivery of the first course in computer science: Problem solving then programming. Journal of

Engineering Education, 87(3), 313-320.

Gal-Ezer, J. & Harel, D. (1998). What (Else) should CS educators know?

Communications of the ACM, 41(9), 77-84.

Gee, J. P. (2003). What Video Games Have to Teach us About Learning and Literacy.

New York, NY: Palgrave Macmillan.

Hartmann, W., Nievergelt, J., & Reichert ,R. (2001). Kara, finite state machines, and the case for programming as part of general education. In Proceedings of Symposia on

Human Centric Computing 2001.

Jenkins, T. (2001). The motivation of students of programming. ACM SIGCSE 6th.

Annual, 53-56.

Johnson, S. (2005). Everything bad is good for you: How today’s popular culture is actually making us smarter. London: Allen Lane.

Kasurinen, J.,Purmonen,M., & Nikula U. (2008). A study of visualization in introductory programming. Retrived April 20, 2011, from http://www.ppig.org/papers/

Kelleher, C. & Pausch, R. (2005). Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers. ACM

Computing Surveys, Volume 37(2), pages 83 – 137.

Computing Education, 10(4), Article 14, 1-21.

Kölling, M. (2010). Introduction to Programming with Greenfoot. Upper Saddle River, New Jersey: Pearson.

Kölling, M., Quig, B., Patterson, A. & Rosenberg, J. (2003)The BlueJ system and its pedagogy. In Journal of Computer Science Education, Special issue on Learning and Teaching Object Technology, 13 (4).

Lawler, R. W. (1982). Designing computer-based microworlds, Byte, 7(8), 138-160.

Laird, J.E. (2001). Using a computer game to develop advanced AI. Computer, 34(7), 70–

75.

Mayer, R. E., Dyck, J. L., & Vilberg, W. (1986). Learning to program and learning to think: What’s the connection? Communications of the ACM, 29(7), 605-610.

McDermott, R., Eccleston, G., & Brindley, G. (2008). More than a good story—Can you really teach programming through storytelling? Innovation in Teaching and Learning in Information and Computer Sciences (ITALICS), 7(1), 34-43.

McKetihen, K., Reitman, J.S., Rueter H.H. and Hirtle S.C. 1981. Knowledge

Organization and Skill Differences in Computer Programs. Cognitive Psychology 13, pages 307-325.

Miller, G. A. 1956. The magical number seven, plus or minus two: Some limits on our capacity for processing information. Psychol. Rev. 63, 2, 81-97.

Naps, T. L., Rößling, G. R, Almstrum, V., Dann, W., Fleischer, R., Hundhausen,C., Korhonen, A., Malmi, L., McNally, M., Rodger, S. & Vel´azquez-Iturbide J.A.

(2002). Exploring the Role of Visualization and Engagement in Computer Science Education. In Working Group Reports from ITiCSE on Innovation and Technology in

Computer Science Education, pages 131–152, New York, NY, USA.

Nevalainen, S. Sajaniemi, J. (2006) An Experiment on Short-term Effects of Animated versus Static Visualization of Operation on Program Perception. Proc. 2006

International Workshop on Computing Education Research, pages 7-16, Canterbury, UK.

Pajares, F. (1996) Self-Efficacy Beliefs in Academic Settings, Review of Educational Research, Winter 1996, Vol.66, No.4, pp. 543-578.

Papert, S. (1980). Mindstorms: Children, computers and powerful ideas. New York, New York: Basic Books.

Pattis, R., Roberts, J., & Stehlik, M. (1994). Karel the robot: a gentle introduction to the art of programming, 2nd Edition.

Prensky M (2001). Digital game-based learning. New York: McGraw-Hill.

Ramalingam, V. and Wiedenbeck, S. (1998) Development and Validation of Scores on a Computer Programming Self-efficacy Scale and Group Analysis of Novice

Programmer Self-efficacy. Journal of Educational Computing Research, Vol.19 (4), pp367-381.

Ramalingam, V., La Belle, D. and Wiedenbeck, S (2004). Self-efficacy and mental models in learning to program. ACM SIGCSE Bulletin, Volume 36- Issue 3, 171-175.

Robertson, J., & Howells, C. (2008). Computer game design: Opportunities for successful learning. Computers & Education 50, 559-578.

Soloway, E. (1993). Should we teach students to program? Communications of the ACM, 36(10) 21-24.

Stephenson, C. (2000). A Report on High School Computer Science Education in Five U.S. States. [On-line]. Available: http://www.holtsoft.com/chris/HSSurveyArt.pdf

Simulations and Gaming, vol. 2, 49-62.

Valente, J. A. (1995). Logo as a window into the mind. Logo Update, 4(1).

Verno, A., Carter, D., Cutler, R., Hutton, M., & Pitt, L. (2005), A Model Curriculum for K-12 Computer Science Level 2 Objectives and Outlines (Draft 02/2005) , SIGCSE' 05, February 23–27, 2005, St. Louis, Missouri, USA..

Wallace, S.A., & Nierman, A. (2006). Addressing the need for a Java based game curriculum. Journal of Computing Sciences in Colleges, 22(2), 20–26.

Wallace, S. A., McCartney, R., & Russell, I. (2010). Games and machine learning: A powerful combination in an artificial intelligence course. Computer Science

Education 20(1), 17–36.

West, M., & Ross, S. (2002). Retaining females in computer science: A new look at a persistent problem. JCSC, 17(5), 1-7.

Youngblood, M. (2007). Using XNA-GSE game segments to engage students in advanced computer science education. In Proceedings of the 2007 Conference on Game

Development in Computer Science Education (pp. 70–74).

附錄一 電腦素養調查

班別:___________ 座號:_____ 姓名:_______

各位同學,大家好!

在這份問卷中,我們設計了一些問題以便瞭解大家對於電腦軟體應用與程式設 計的看法,請各位同學依據以往對於「程式設計」的印象填答問題。你的填答 內容將不會影響你的成績,而且本調查所收集之資料將僅供研究之用。

在此先謝謝你協助填答此問卷!

1. 請勾選你學習過的電腦軟體?(在此指在正式課堂中學習過的電腦軟體)

Word □ Excel □ PowerPoint □ FrontPage □ Scratch □ Alice □ PhotoImpact □ Greenfoot □ 2. 請問你有學習過程式設計嗎? 有□ 沒有□

若填寫「有」,請問你學習過的程式語言為何?_____________

3. 請問你對程式設計的印象是什麼?

困難的 □ 簡單的 □ 不知道什麼是程式設計 □ 4. 請問你想學習程式設計嗎?

想 □ 不想 □ 沒有意見 □

問卷結束

附錄二 Greenfoot 程式設計成就測驗

班級:________座號:________姓名:________

一、是非題

( )1. 一個方法必須有參數傳入才可執行。

( )2. 一個方法執行完,必定會產生回傳值。

( )3. 回傳值的資料型態可以是整數、字串或布林值。

( )4. 子類別可使用父類別的所有方法。

( )5. while 迴圈可能不斷重複執行,不會結束。

二、選擇題

( )1. 有一方法如下:

上述程式碼為 sum 方法,請問若指令為 sum(10, 18); ,回傳值的資料型態和值為何?

(A) boolean, 28 (B) int, 10 (C) int, 28 (D) string, 28

( )2. 有一指令如下:

Greenfoot.getRandomNumber(10);

下列何者可能為上述指令產生的值?

(A) 10 (B) 0 (C) -3 (D) 12

( )3.有一程式片段如下:

根據以上程式片段,下列敘述何者正確?

(A) 若 A = 1, B = 1, 則 C = 1 (B) 若 A = 2, B = 1, 則 C = 1 (C) 若 A = 3, B = 2, 則 C = 2 (D) 以上皆非

( )4.有一程式片段如下:

(A) Greenfoot.whetherKeyPress(“space”);

(B) Greenfoot.isKeyPress(“space”);

(C) Greenfoot.isKeyDown(“space”);

(D) Greenfoot.isKeyboardDown(“space”);

三、填充題

(3) _________

}

(4) _________

}

2. 請設計坦克的 act()方法使坦克可以走到圓點地區。可使用的方法有:

move(); //坦克前進一步

turn(x); //坦克順時針旋轉 x 度 canMoveUp(); //判斷是否可往上走 canMoveDown(); //判斷是否可往下走 canMoveLeft(); //判斷是否可往左走 canMoveRight(); //判斷是否可往右走

此題必須使用 if-敘述句,若沒有使用到 if-敘述句不給分。

public class tank1 extends vehicle {

public void act() {

} }

附錄三 課後態度問卷

8. 相較於應用軟體(如 Word、PowerPoint、PhotoImpact 等),

我覺得程式設計比較容易學。 □ □ □ □

 我對程式設計課的改進建議或感想:

附錄四 Greenfoot 自我效能量表

附錄五 課堂觀察紀錄表

觀察者:_______觀察日期:______觀察班級:_______

一、課程實施情形:

1. 學生提問記錄(操作相關、語法相關或概念相關):

2. 學生程式錯誤記錄(語法錯誤或是操作錯誤):

3. 學生反應是否良好(學生對於課程的褒、貶):

二、教學者記錄:

1. 是否達成預期教學目標:

2. 教學實施中所遭遇的困難與解決方法:

3. 教學內容何處值得加強或補充:

三、 其他的心得與補充:

附錄六 由下而上式學習策略組課堂講義

Lesson 1 方法呼叫、參數、資料型態、if-敘述句 1. 方法呼叫

我們來檢視 tank1 類別的程式碼,開啟 tank1 類別的編輯器,程式碼如下:

這是標準的 Java 類別定義式,也就是說,這些文字定義了坦克能做些什麼。

在這個類別定義式中,我們可以看到一個叫做 act()方法,如下:

第一行是這個方法的「標記式」(signature),下面的三行是這個方法本身(body),

在兩個大括弧之間寫進程式碼就可以讓坦克車做動作,我們可以使用一些指令,取 代中間那行灰色的字,例如: move(); 。在程式設計中,這樣的指令,稱為「方法 呼叫」,也就是「呼叫執行此方法」的意思。注意每個指令最後必須有一個分號做結 尾,用來告訴電腦一個指令的結束。

遊戲實作:

在 tank1 類別編輯器中的 act()方法內,加入 move() 指令。

回到 Greenfoot 主畫面,按下 讓坦克車類別的 act()方法連續地執行

2. 參數

在方法呼叫中,除了 move()方法這種括弧中沒有任何資料的呼叫方式外,有些 方法,像是:turn(5);,小括弧中的數字 5 代表要傳進方法中的資料值,我們稱之為

「參數」。參數可以是數字,也可以是其他資料型態。而參數的資料型態,是在定義 一個方法時,就必須要決定好的,如果傳入不是當初設定好的資料型態,系統就會 回報程式錯誤。

遊戲實作:坦克轉彎

假設我只想讓坦克車轉彎,不希望它移動,我們可以將剛剛的 move()指令,

用 turn(x)指令取代,就可以讓坦克車轉彎 x 度。例如:

回到 Greenfoot 主畫面,按下 讓坦克車類別的 act()方法執行 turn(45)這個 方法一次。就可以看到坦克順時針旋轉 45 度。

3. 資料型態

我們來看 vehicle 類別的程式碼,除了我們之前用過的 move()和 turn()兩個方法外,

還有 atWorldEdge(),標記式如下:

我們可以發現這個方法的標記式跟前面兩個不太一樣,move()和 turn()兩個方法使用

「void」,而 atWorldEdge()使用「boolean」,在程式設計中,這些稱為回傳值的資料 型態(return type)。「void」代表不需要回傳值;「boolean」代表回傳值的資料型態 是 True 或 False。其他常用的回傳值資料型態還有代表回傳值是整數的「int」;代表 回傳值是一個字串的「string」。

當我們呼叫一個需要回傳值的方法時,就像是在問電腦問題讓當電腦回答,而不 是對電腦下命令。如果我們使用 atWorldEdge()這個方法,它會回應 True(對!)或 False(錯!),因此,我們可以使用這個方法來檢查坦克車是否碰到地圖的邊界。

4. if-敘述句

「if-敘述句」在程式語言中是為了要在某種條件成立的情況下才能執行指令使用 的方法。一般形式如下:

if ( 條件) {

指令;

指令;

...

}

小括弧中的條件可以是任何可以產生 True 或 False 的判斷式。當條件為 True 時,

就會執行大括弧中的指令;如果條件是 False,就會跳過大括弧中的指令,系統會繼 續執行 if-敘述句後面的指令。

遊戲實作:坦克邊界偵測

在 tank1 類別編輯器中的 act()方法內,加入以下程式碼:

我們注意到上述的程式碼,move()方法是在 if-敘述句外面,所以它永遠會被執 行;也就是說:如果坦克車碰到地圖邊界,它會轉彎,然後前進;如果沒有碰 到邊界,它就只會前進。

Lesson 2 隨機亂數、按鍵偵測 1. 產生隨機亂數

在程式設計中,常常會需要使用到隨機的數值,以下為產生隨機數值的方法:

Greenfoot.getRandomNumber( int );

這個方法的名稱為 getRandomNumber,可是為什麼前面會加一段「Greenfoot」

和一個「點符號」呢?在 Java 程式語言中,如果想呼叫非自己類別的方法,就需要 用到這樣的指令。也就是說 getRandomNumber 這個方法是屬於 Greenfoot 這個類別 的,我們想要使用,就要明白地告訴電腦:「我想呼叫 Greenfoot 類別中的

和一個「點符號」呢?在 Java 程式語言中,如果想呼叫非自己類別的方法,就需要 用到這樣的指令。也就是說 getRandomNumber 這個方法是屬於 Greenfoot 這個類別 的,我們想要使用,就要明白地告訴電腦:「我想呼叫 Greenfoot 類別中的