第二章 文獻探討
第二節 程式設計教學方式
程式設計是一種解題活動,程式設計的學習可以透過解題技巧的遷移而達成;
運算思維的過程中,就是將問題拆解至許多個小問題解決,透過描述問題、解釋 數據、發展演算法來解決問題(Barr & Stephenson, 2011; Mayer, 1992)。本節針對
「程式設計教學之策略」、「程式設計教學方式之應用」分別進行探討。
壹、程式設計教學之策略
運算思維的基本要素包含了問題解決、系統設計及理解人類行為(Wing, 2006)。
學習者學習程式設計,先從問題整體性觀念出發,而後進行工具學習,最後統整 工具於實際問題解決之中;要具備能夠撰寫程式以操控電腦的能力,需整合數種 型態的知識,如程式設計的語法知識、語意知識、以及問題解決(Chen & Tsai, 2016)。
Shneiderman (1980)將程式設計技能定義成四項:(1)程式的理解:瞭解一個寫好的 程式執行程序的能力;(2)程式的組成:分析問題並且知道如何解決問題的能力;
(3)程式的除錯:分析錯誤、找出錯誤及改正錯誤的能力;(4)程式的修改:以正確 的程式為基礎,能修改程式以完成另一個目標的能力。
Robins、Rountree 與 Rountree (2003)在程式設計教育領域文獻回顧中分析程 式設計專家與新手在學習程式設計之差別,並提出以系統化分析可由上至下或由 下至上之策略解構程序性任務工作,且指出教學者應該設法引起學生學習動機,
可以運用視覺化的程式設計環境。而視覺化程式設計環境採用多樣的視覺化元素,
幫助初學者建構程式並瞭解程式執行過程 (Kelleher & Pausch, 2005; Navarro-Prieto & Canas, 2001)。另外,教師在程式教學的過程中,應預留時間引導學生進 行思考,並強調程式的思考邏輯與其運作方式。教學者除了要引導學習者理解問 題、分析問題並構思解決方法進而撰寫出程式外,更重要的是當學習者在發現程 式錯誤時,能引導觀察程式錯誤的原因、學習修正錯誤的技巧,幫助學習者發展
其解決問題的能力,進而使其獲得成就感,並提升其學習興趣(Lykke, Coto, Jantzen, Mora & Vandel, 2015)。
貳、程式設計教學之應用
Barnes、Fincher 與 Thompson (1997)根據 Polya 問題解題策略(1957)提出程式 設計的四個步驟,(1)理解問題情境:瞭解問題或任務情境,並鼓勵學習者提問釐 清任務範圍;(2)擬定解題計畫:根據舊經驗或現有課程教材中範例設計為參考,
將問題拆解以擬定解題計畫;(3)進行程式設計:按照計畫依序完成階段程式,並 逐步進行檢測;(4)回顧解題歷程:針對已完成的程式進行檢討與反思,累積經驗 鞏固所學。其四個步驟內涵亦能呼應體驗式學習環之四個階段意義,因此本研究 以 Barnes 等人所提出之程式設計四個步驟中的理解問題情境分為「情境導向學 習」及「功能導向學習」兩種教學方式,以下分別就「情境導向學習」及「功能 導向學習」進行探討。
一、情境導向學習
情境導向學習係指透過遊戲情境為任務導向學習方式,以完整程式為範 例,逐一就特定功能之程式段落進行教學,幫助學習者透過解構程式組成的 方式,學習主要功能段落程式。其任務情境若能引發學生興趣或聯繫至未來 實踐,且與教師教學目標一致,則可建立有效的任務導向學習情境(Wood, 2003)。任務導向學習方式能提高知識、技能等全方位能力(Race, 2000),黃樹 群(2018)研究發現以任務導向策略學習程式設計課程的確對所有類型學習者 都有效。而情境學習能有效幫助學習者的進行學習遷移並形成心智模型 (Burbaite, Bespalova, Damasevicius & Stuikys, 2014)。
功能導向學習係指以學習功能為目標導向學習方式,其將任務目標進行拆解,
並逐一以特定功能之程式段落為範例進行教學,幫助學習者透過程式段落之拼圖 方式組成完整程式,學習各段落程式之功能及其在完整程式之作用。Code.org 之 網站設計即透過完成每個關卡的目標,於初學者腦中逐漸形成程式設計的基本結 構、概念與功能 (Kalelioğlu, 2015)。
綜合以上所述,本研究將程式學習方式融入體驗式學習環階段,建立基本概 念,並熟悉及運用程式碼及相關規則。其分為「情境導向學習」,以遊戲情境中完 整組合的程式積木為範例,詳細說明每個積木的用途與功能進行教學,學習各段 落程式之功能及其在完整程式之作用;以及「功能導向學習」先透過分析任務目 標,再逐一透過以解構的程式積木為範例,並詳細說明每個積木的用途與功能。