• 沒有找到結果。

第二章 文獻探討

第二節 運算思維

一、 運算思維的定義與內涵

運算思維逐漸成為資訊科學教育之重要觀念,此由 Carnegie Mellon University(CMU)

之電腦科學學者 Wing 於 2006 年正式提出。她指出運算思維是以電腦科學的基本觀念來 解決問題、設計系統、以及瞭解人類的行為。運算思維是每個人應具備、非專屬於資訊 科學家之基本能力,它擁有以下特點(1)是種觀念,而非撰寫程式;(2)是種基本的,

而非死板的技能;(3)是關於人類解決問題的方法,而非電腦的;(4)結合了數學以及 工程思維;(5)是種構想,而非作品;(6)能適用於每個人、每個地方(Wing, 2006)。

Wing 於 2008 年進一步認為運算思維是一種分析式的思維,包含了以數學思維來解決問 題、以工程思維來設計與評估複雜的系統、以科學思維來理解人類的思想與行為(Wing, 2008)。Wing 並於 2011 年將運算思維定義為架構及解決問題之思考流程,將其以訊息 處理者可以有效執行的形式呈現(Wing, 2011)。而 Aho 於 2012 年指出運算思維是架構 問題之想法與流程,且其解法可運用步驟化及演算法表示;而最重要的部分為找出制定

問題和解決方法之合適的模型(Aho, 2012);Syslo 定義運算思維為一種思考的模式,此 模式能夠提供推理架構與問題解決之方法(Sysło, 2015)。

Google 在 Exploring Computational Thinking 網站中認為運算思維是一系列包含許多 特性的問題解決歷程,例如:邏輯化進行排序與分析資料、循序地產出問題解決方法等,

它能適用於任何一門學科(Google for Education, 2015)。「美國電腦科學教師協會」

(Computer Science Teachers Association, CSTA)定義運算思維為使用電腦可執行之問題 解決策略,它包含了抽象化、遞迴、重複結構等觀念,以及分析與處理資料、製作虛擬 或實際作品的能力。CSTA 並明確指出資訊科學課程的五大面向為運算思維、合作學習、

運算實作與程式設計、電腦與溝通設備以及全球化與道德倫理議題(CSTA, 2011)。CSTA 並與「美國國際教育科技協會」(The International Society for Technology in Education, ISTE)在 2011 年共同認為運算思維是在制定問題後,能利用電腦或其他工具協助來解 決問題,並有以下特性:(1)邏輯化地組織與分析資料;(2)透過「抽象化」(Abstraction)

來表示資料;(3)透過演算法思維將問題解決策略自動化;(4)找尋、分析與執行最有 效之問題解決方案;(5)將問題解決之過程「一般化」(Generalization)以適用於各種 問題中(ISTE, 2011)。

Lu 與 Fletcher 指出運算思維的四大要點為:(1)以電腦科學之基本觀念來解決問題 與設計系統的方法;(2)以不同程度的抽象化能力有效地理解問題與發展問題解決的策 略;(3)透過演算法思維與數理觀念來發展有效率、公平且安全的解題方案;(4)瞭解 其解題方案在效能、經濟以及社會上之範圍與限制(Lu & Fletcher, 2009)。Barr 與 Stephenson 在運算思維的能力中建議應包含:(1)能使用抽象化、自動化、演算法、資 料蒐集與分析以設計解決問題之方法;(2)實行適當的設計方案;(3)測試與偵錯;(4)

模擬與系統分析;(5)執行操作與溝通,並且能自我省思;(6)運用專有名詞;(7)理 解抽象化的意義並達到不同程度的抽象化能力;(8)在原則中探索、激發創意;(9)小 組的問題與解決及(10)能運用多種的學習策略。表 2-1 為 Barr 與 Stephenson 為不同學 科所提供之運算思維應用範例,本章節僅列出與資訊科學相關之部分(Barr & Stephenson, 2011)。在 Computing at School Working Group 中提及運算思維是進行邏輯思考、演算法 思維以及遞迴和抽象化的能力,並提出其要素為抽象化、「模式化」(Modeling)、「分解」

(Decomposition)與一般化(Computing at School Working Group, 2012)。Grover 與 Pea

處理資訊、符號系統及表示方法、流程控制與演算法觀念、結構化分解問題(「模組化」

(Modularizing))、重複和遞迴以及平行化思考、條件邏輯、效率與執行的限制、與除 錯和系統性偵測錯誤(Grover & Pea, 2013)。而在本國 107 資訊科技科新課綱中提出學 生應能透過具備之運算思維能力來分析問題、發展解題方式,並進行有效的決策(教育 部,2014a)。

表 2-1 運算思維內涵於資訊科學領域之應用範例

運算思維內涵 資訊科學領域應用範例

抽象化 程序化封裝經常使用到的指令。

使用函數;使用條件敘述、迴圈、遞迴等。

分解 定義物件與方法。

定義 main 與 functions。

資料表示

使用資料結構,如:陣列(array)、鏈結串列(linked list)、

堆疊(stack)、佇列(Queue)、圖(graph)、雜湊表(hash table)等。

模式化與模擬 使用動畫來呈現演算法或參數掃值(parameter sweeping)。

演算法思維 學習經典的演算法。

針對某一個領域的問題進行演算法實作。

資料來源:Barr, V., & Stephenson, C. (2011). Bringing computational thinking to K-12: what is Involved and what is the role of the computer science education community? ACM Inroads, 2(1), 48-54.

許多學者提出運算思維應有之內涵,其中多數認為應包括抽象化、分解、模式化與 模擬、歸納與演算法思維等(Barr & Stephenson, 2011; CSTA, 2011; Google for Education, 2015; Grover & Pea, 2013; C. Selby & Woollard, 2013; Wing, 2006)。而 Selby 於 2013 年整 理各家文獻後,認為運算思維的內涵應為:抽象化(Abstraction)、分解(Decomposition)、

演算法則(Algorithmic thinking)、「分析」(Evaluation)、歸納與一般化(Generalization)

(C. Selby & Woollard, 2013)。本研究將以 Selby 提出之五大運算思維內涵為主軸,並定 義符合該項目之解釋:

1. 抽象化:能擷取問題的關鍵,並運用於適當的資料表示方法。

2. 分解:能將複雜的問題再形成為足以解決的小問題。

3. 演算法則:能指出一系列問題解決的步驟。

4. 分析:能分析問題解決策略的效率與效能。

5. 歸納與一般化:能從問題解決之模式中建立模型,並套用於其他的問題上。

二、 運算思維與程式設計教學之相關議題

美國總統歐巴馬於 2014 年曾親自宣導「一小時寫程式」(Hour of code)(Code.org, 2016),新加坡總理李顯龍也於 2015 年公開自己撰寫之數獨解題程式,而臺灣總統蔡英 文於 2016 年受邀出席「『電腦科學教育週:一小時玩程式』啟動活動」,表示要讓寫程 式成為全民運動,由此可見程式設計教學與運算思維培養之重要性。Selby 認為運算思 維能力與程式設計活動有其相關性,學生透過程式設計的學習能夠幫助培養運算思維的 內涵,例如分解、一般化等(C. C. Selby, 2012)。Grover 與 Pea 指出程式設計是創作運 算成果的主要方式,學生透過程式設計的學習能夠建立運算思維中的認知任務、及擔任 培養運算思維能力的橋樑。由表 2-1 提出之運算思維內涵於資訊科學領域之應用範例中,

可以看出透過程式設計課程能夠幫助學生實踐運算思維之學習,例如:在實作條件敘述、

迴圈以及遞迴時,能夠培養抽象化的能力;定義物件與方法時能夠培養分解的能力;使 用資料結構時能夠培養資料表示的能力;學習經典演算法時能夠培養演算法思維的能力

(Grover & Pea, 2013)。

Lee 等人認為藉由程式設計的學習,能夠建立學生在模式化、設計與開發等之運算 思維能力(Lee et al., 2011)。而 Computing at School 提及程式設計為資訊課程的核心,

在撰寫程式的過程中,能激發創造力、邏輯思維、精確性、問題解決,並有助於培養學 生思考的技巧,程式設計亦能將抽象化的想法具體呈現(Computing at School Working Group, 2012)。在 CSTA 的課程中,藉由程式設計的教學,例如設計解題的演算法、定 義解題指令、分析指令、描述資料的表示、理解循序與重複的結構等,能幫助國高中學 生培養運算思維之能力(CSTA, 2011)。由此可知程式設計的教學在培養運算思維能力 中是不可或缺之方法要素。

Selby 則於 2012 年提出運算思維能力、程式設計活動以及布魯姆的認知領域教育目

思維與問題解決能力之教材。其中運算思維能力包含:分解、抽象化、歸納與一般化、

演算法設計、模式化與模擬;程式設計活動包含:合作學習與配對工作、角色扮演與肢 體動覺、拼圖與遊戲、找出錯誤、修正錯誤與發展系統;而布魯姆的認知領域教育目標 則有:知識、理解、應用、分析、綜合以及評鑑。

圖 2-2 運算思維能力、程式設計活動以及布魯姆的認知領域教育目標 三面向間之模型

資料來源:Selby, C. C. (2012). Promoting computational thinking with programming. Paper presented at the Proceedings of the 7th Workshop in Primary and Secondary Computing Education.

分解 抽象化 歸納與 一般化

演算法 設計

模式化 與模擬

合作學習、

配對工作

角色扮演、

肢體動覺

拼圖與

遊戲 找出錯誤 修正錯誤、

發展系統

知識 理解 應用 分析 綜合 評鑑

布魯姆的認知領域教育目標 程式設計活動

運算思維能力