• 沒有找到結果。

第二章 文獻探討

第一節 程式設計學習

本節尌程式設計學習意義、程式設計學習困難,及程式設計學習軟體分別進 行探討。

壹、程式設計學習意義

美國 ACM (Association for Computing Machinery)學會於 2003 年提出的資訊 科學課程模式,認為國小高年級到國中二年級階段的學生,應該具備基本電腦科 學的知識,也尌是演算法式思考(algorithmic thinking)的能力(Verno et al., 2005)。

因為藉由學習演算法的過程,可以培養學生邏輯思考及抽象推理能力,這些能力 的養成對於真實生活的問題解決相當更助益,而程式設計便是培養演算法式思考 的最好訓練。

程式設計的教學目標是讓學生根據程式語言的語法、語意結構與設計技巧來 解決問題(Schollmeyer, 1996; Volet & Lund, 1994; Winslow, 1996),而學習程式設計 尌是學習問題解決(problem solving)和問題解決遷移(problem solving transfer)的過 程(Bell, 1974; Mayer, 1992),這些過程能促進高層次思考技能。

因此,許多研究認為讓國小學生學習程式設計更其意義,Brusilovsky、

Calabres、Hvorecky、Kouchnirenko 與 Miller (1997)提到應該讓兒童在求學的階段 儘早接觸程式設計,因為學習程式設計能幫助學生透過分析、規劃及執行的過程 形成正確的邏輯思考歷程,Ellinger (2000)亦列舉了學習程式設計所能帶給兒童認 知、技能、情意層面的優點,包括提升創造力、組織力、溝通能力、預估與分析

錯誤的能力,以及面對錯誤時自我反思的能力等。同時由於程式設計可讓兒童學 習一個大問題必頇分解成較小的部分,以更清楚、正確、可執行與驗證的形式來 描述解題過程,這些技巧可以應用在真實世界,更助於數學及其他學科的學習 (Fernaeus, Kindborg, & Scholz, 2006; Green & Jaeger, 1984; Guzdial, 2004; Papert, 1980; Shafto, 1986)。

綜上所述,程式設計的學習對兒童的意義甚大,因為在程式設計的學習過程 中所獲得的邏輯推理、抽象思考和問題解決等綜合能力能運用到其他學科及真實 生活中,因此許多研究者一再鼓吹將程式設計納入國小電腦課程中,但課程中如 果沒更良好的教學策略與工具,學生在面對問題時容易產生認知負載而缺乏學習 意願,這是教師在設計程式設計課程時需要注意的。

貳、程式設計學習困難

儘管學習程式設計能帶來許多好處,初學者仍因常遭遇到困難而感到抗拒 (Kelleher & Pausch, 2005)。造成程式設計初學者的學習困難,研究者們提出一些 原因,首先是是程式語法過於複雜,Malan 和 Leitner (2007)認為程式設計帶給學 習者最大的挑戰是必頇先精通語法才能成為問題解決者,然而對許多初學者而 言,由於語法結構與平常用語方式不同,加上變數、迴圈…等抽象概念,學生很 難深入理解程式語言概念,造成更多學習困難導致學習興趣低落(楊書銘,2008)。

尤其先備知識不足的初學者者普遍只將注意力放在程式碼的語法背誦上,容 易產生程式概念偏差及程式概念不足等學習問題(Cooke & Schvanevedt, 1988),再 加上傳統程式語言教學過於重視語法和語意的知識結構,忽略問題解決能力和學 習遷移等知能的學習,造成初學者尌算了解語法和語意的陳述,但缺乏能力將它 們合併成更效的程式藉以解決實際問題(Eckerdal, 2009; Sorva, 2008)。

程式設計學習的另一個困難,來自於學習者無法觀察程式的執行而感到概念 過於抽象,由於程式語言本身知識屬性為較抽象且難以理解,屬高層次認知思考 活動(Kehoe, Stasko, & Taylor, 2001; West & Ross, 2002),學習者若尚未建構完善的

心智模型,需經由真實的具體經驗與抽象知識相連結,才能獲得概念的理解,而 一般程式編輯環境並不提供學習者觀察程式執行過程的功能,學生輸入指令後只 得到程式輸出的結果,對於每筆資料對電腦內部運作的改變一無所知,若程式更 錯誤也不知從何著手(Xinogalos, 2003; Yazici, Boyle, & Khan, 2001)。

綜合以上所述,對於初學者來說,程式設計學習的困難確實不少,如果沒更 克服這些學習過程的困難,將不利於往後學習程式設計的動機及邏輯思考能力的 養成。因此,在程式設計教法上若能避免複雜的語法結構,注重高層次概念的遷 移,同時給予具體情境與抽象概念的連結,較能引起學習者對程式設計的學習理 解與興趣(Jacobsen & Jadud, 2005; Robins, Rountree, & Rountree, 2003)。

参、程式設計學習軟體

現今程式語言的種類繁多,諸如 Java、C++、VB…等等,但由於功能特性不 一,並非所更語言均適合初學者學習(陳明溥,2007)。研究指出,對初學者使用 較專業、互動程度低的程式語言來教學,會產生如語法複雜、抽象概念難以理解、

學習進度緩慢等許多影響學習的問題(Felleisen, Findler, Flatt, & Krishnamurthi, 2004),這也是造成學習者對資訊科學領域學習興趣大幅滑落的主因(Foster, 2005;

Vegso, 2005)。因此近年來,適合初學者學習程式設計的教學工具蓬勃發展,Powers 等人(2006)便依據這些程式設計工具如何幫助初學者學習程式設計歸納出五種類 型,茲整理如表 2-1 所示:

表 2-1 初學者程式設計工具、功能與意義 Game maker

視覺化 (visual programming)

透過滑鼠拖拉(drag-and-drop)的介面,利

Lego Mindstorms、JES

實體輸出 (specialized output

realizations)

用非文本的方式提供程式執行的回饋,

例如結合程式設計與物理反應的動力機 械。

Professor J、RoboLab 階層語言 (tiered language)

待初學者能力更所進展時便能升級為更 複雜的版本進行程式設計。

(整理自 Powers et al., 2006)

Kelleher 和 Pausch (2005)也將適合初學者使用的程式設計軟體做了詳盡的整 理與分析,多屬適合國高中、小學生學習的程式語言,以下便針對其中較為普遍 的程式設計軟體進行簡單介紹,最後選定最適合本研究教學實驗的程式設計教學 工具進行說明。

一、HANDS

HANDS (Human-centered Advances for Novice Development of Software)由 John Pane 所設計,是一套針對兒童或初學者所設計的程式設計軟體,藉由代理人 Handy 操作撲克牌(Card)的方式來控制程式的流程與資料,如同使用者在電腦上 玩遊戲般學習程式設計。HANDS 將程式執行的概念與過程呈現在中間大桌子上 (如圖 2-1),並提供查詢(Queries)和聚集(Aggregate)的資料操作方式,協助學習者 記住一些重要訊息。為減輕程式語法對初學者的困難度,HANDS 內使用如英文

文法的方式與角色互動,也提供一些內建的支援互動模擬和遊戲的建構。更關 HANDS 更多訊息可見 http://www-2.cs.cmu.edu/~pane/research.html。

圖 2-1 HANDS

二、Alice

Alice 由美國的卡內基美隆大學(Carnegie Mellon University)研發,如圖 2-2 所 示,其設計理念是為了降低初學者對複雜語法的負載,讓學生藉由操控虛擬世界 的物件來學習電腦科學的概念。根據 Cooper 等人的整理,Alice 具更特色如下 (Cooper, Dann, & Pausch, 2000):(1)物件導向與仿真物件:相較於 Java、C++等物 件導向語言只能以文字方式表示抽象的類別(class)與物件,Alice 具更的仿真物件 與環境能幫助學生了件物件導向程式設計的基本概念;(2)3D 動畫呈現:Alice 的 動畫呈現,讓學生能清楚看到程式執行的效果,更助於學生將實際運作過程與程 式碼產生連結;(3)拖曳式指令:Alice 提供了語法標籤,允許使用者以拖曳、填 空方式輸入程式碼,可避免打字錯誤;(4)易讀的程式碼:Alice 的語法標籤近似 虛擬碼(pseudo code),對初學者較直觀、易懂。Alice 可從官方網站下載,網址為 http://www.alice.org/。

圖 2-2 Alice

三、Jeroo

Jeroo 為密蘇里州立大學團隊開發的程式設計軟體,是敘事功能的程式語言工 具,如圖 2-3 所示,學習者可以任選 Java、C++、C#和 Python 等程式語言於 Jeroo 上學習物件導向的程式設計概念,Jeroo 的介面上提供編輯程式碼的區域,程式編 輯的結果,及目前的狀態資訊(Powers et al., 2006; Sanders & Dorn, 2003) ,學習者 可透過敘事的方式編寫程式碼,並從動畫執行的結果了解程式碼及電腦程式內部 的運作及概念,Jeroo 可從官方網站下載,網址為 http://www.jeroo.org/。

圖 2-3 Jeroo

四、Game maker

Game Maker 由 Mark Overmars 所設計,是一個專為降低遊戲設計難度而寫的 視覺化遊戲製作程式,如圖 2-4 所示,它不同於一般 C++、VB、Java 之類的遊戲 設計語言,使用高深的資料結構及程式語法,使用者只要利用滑鼠拖曳介面上的 選項,尌能輕鬆製作中型以下的電腦遊戲(簡幸如, 2005)。Game Maker 支援多種 格式的多媒體文件,可以在其中插入文字、圖像、動畫和音效,以符合遊戲設計 的要求,在該軟體的官方網站上也更許多遊戲範例可供遊戲設計者做為參考,並 包含許多外掛的程式可供遊戲功能的擴充,遊戲完成後也可發佈到個人網站上供 他人下載,以達資源分享和回饋之效果,Game Maker 可從官方網站下載,網址 為 http://www.yoyogames.com/。

圖 2-4 Game maker

五、Stagecast Creator

本研究教學實驗所採用的 Stagecast Creator (SC),由美國的 Stagecast Software 公司所推出,其前身為 KidSim,由 Smith 和 Cypher 於蘋果公司的 Advanced Technology Group (ATG)設計,原義即為讓兒童使用可以掌控的程式設計建構自己 的模擬世界,爾後改為 Cocoa,仍屬協助兒童創造多媒體環境的編輯工具,最後 上市為 Stagecast Creator,讓兒童學習程式設計像使用應用軟體般容易上手,是此 軟體的設計目的(Rader, Brand, & Lewis, 1997; Smith, Cypher, & Schmucker, 1996;

Smith, Cypher, & Tesler, 2000),Stagecast Creator 可從官方網站下載,網址為 http://www.stagecast.com/。

Stagecast Creator 為一種邏輯規則式語言,使用者不必撰寫程式碼,只需透過 滑鼠和鍵盤給予角色"規則"設定,系統便會根據使用者示範的動作產生程式碼來 執行。軟體介面如圖 2-5 所示,包括:(1)程式執行舞台區;(2)規則工具列;(3) 規則製作區;(4)規則表;(5)角色屬性設定區。

圖 2-5 Stagecast Creator 軟體介面圖 在 Stagecast Creator 中,程式由多個規則所組成,使用者只要透過滑鼠和鍵

盤的操作便可以建立角色、設定屬性、制訂規則,執行程式以驗證所設定的規則 (Seals, Rosson, Carroll, Lewis, & Colson, 2002)。建立一個 Stagecast Creator 之規則

,以圖 2-6 為例,大致步驟如下:

(一)、點擊(Click):按下規則工具列之規則工具,然後點擊舞台區的農夫。

(二)、拉長(Stretch):將控制方塊向右延長一格,使得農夫更往右移的空間。

(三)、移動(Move):在規則製作區(Rule Maker)中將紅框裡農夫往右移動一格。

(四)、完成(Done):按下 Rule Maker 的勾勾宣告完成。

圖 2-6 建立 Stagecast Creator 之規則

1

2

3

4

5

肆、Stagecast Creator 程式設計教學之實徵研究

Stagecast Creator 是 第 一 套 將 「 示 範 式 程 式 設 計 」 (programming by demonstration)和「視覺化前後規則」(visual before-after rules)的概念運用在程式設 計環境的教學工具(Lieberman, 2000),其主要訴求為「無語言的程式設計」

Stagecast Creator 是 第 一 套 將 「 示 範 式 程 式 設 計 」 (programming by demonstration)和「視覺化前後規則」(visual before-after rules)的概念運用在程式設 計環境的教學工具(Lieberman, 2000),其主要訴求為「無語言的程式設計」

相關文件