運算(計算)思維(Computational Thinking)

前言

教育部運算思維推動計畫

「怎麼教、怎麼學」才是真正重要的關鍵──談國教資訊教育走向

簡單的運算思維

運算思維其實一點也不神祕(上集)

演算法也有不神祕的一面(下集)

運算思維:一張圖看懂機器翻譯(人工智慧)的原理

教導運算思維重要觀念:

要學好運算思維與程式設計,是需要大量且長時間的思維訓練方得以畢竟其功,不要把國、英、數、社、自等課程減少時數來上程式設計?喔!不!千萬不要這樣做!這有幾個非常重要的理由:

1.每個人的資質不同,不是每個小朋友都適合進行這種抽象的程式訓練,如果他沒有興趣或學起來痛苦,就不要強迫他學吧!教育的本質是啟發與引導,而不是用大人對未來的思維,然後強加到這些幼苗上。

2.這裡要再次強調強調再強調基礎知識的重要,就以數學為例,一位加減乘除都不會的小朋友,別期望他會用電腦來設計程式;不知道月形變化的學生是無法設計出依月形自動判斷日期的程式!基礎知識不管是運算思維或是程式設計或是其它更多更複雜的學習,就像是大地一樣,支撐著未來可能的所有一切!

3.讓學生能夠在一般的課程中,日復一日年復一年的反覆訓練(無形中無意中),才能讓學生能夠『直覺的反應』,這樣才能具備將問題程式化的能力。學習系統化解決問題,並具備實踐創意的能力。

4.教學生寫程式,不代表他們就有運算思維,反過來說,懂運算思維不見得會寫好程式,那又如何?話說寫程式也只是初步,資訊世界還很寬廣,如果懂得資訊世界的運作,心中有運算思維之後,或許有人會想閱讀程式去更加理解資訊世界。

運算思維教學內容:

01運算思維「概念」:基礎程式設計知識 (Concepts)

運算思維「概念」指學習程式設計技巧的根本與基礎概念。
< 序列 / > : 識別任務從一步到另一步的一連串的次序
< 事件 / > : 一件事情導致另一件事情的發生
< 重複 / > : 反複多次執行相同序列的事件
< 條件 / > : 基於各種不同狀況來作出決定
< 平行 / > : 讓多於一件事件同時發生
< 命名 / > : 將變數和函數命名供存取及改變數據的數值
< 運算子 / > : 支援數學及邏輯表達式的運算符號
< 數據運用 / > : 儲存、取回及更新數據的運用
< 基礎資料結構 / > : 數據儲存的格式及基本方式

02運算思維「實踐」:解決問題技巧 (Practices)

運算思維「實踐」指發展學生邏輯思維與開創解決問題技巧的方法。
< 演算式思維 / > : 以明確的規則及步驟清楚表達問題的解決方法
< 分解, 概念化, 推論 / > : 在整體和部份之間找出關連性
< 測試及除錯 / > : 確保事情能夠運作──以及找出並解決所出現的問題
< 漸進及反複 / > : 進行一些發展,然後嘗試將發展的事情再進一步發展
< 重用及重新結合 / > : 基於現有的方案或想法來重複使用或重新組織來建造新的事情

03運算思維「視野」:身份與動機 (Perspectives)

運算思維「視野」指培養學生對個人、與他人及科技世界關係的理解,以及對學習程式設計與運算思維的興趣與動機。
< 對程式設計感興趣 / > : 對學習更多關於程式設計及其應用的渴望
< 隨意願持續程式設計 / > : 自發地開展新的程式設計專案
< 對程式設計的正向觀感 / > : 認為程式設計及它的成果對社會是有所貢獻的
< 對程式設計具信心 / > : 發展自信心來了解及程式設計

資料來源

https://www.gitbook.com/book/wooss/easy_computational/details

https://home.gamer.com.tw/creationDetail.php?sn=3182368


一.運算思維(Computational Thinking)

1.計算(運算)概念

計算是指“資料”在“運算符號”的操作下,按“規則”進行的資料變換。 簡單的例子:從小時候開始學習和訓練的算術運算,如“1+2=3”到國中較複雜的例子:對 ax2+bx+c=0 方程式求解等.由

算盤----->>-----加法器-->>-----計算機-->>----電腦---->>-----雲端

2.科學與思維

一般而論,三種科學對應著三種思維:
a.理論科學 ←→理論思維: 理論思維又叫推理思維,以推理和演繹為特徵,以數學學科為代表。
b.實驗科學 ←→實驗思維: 實驗思維又叫實證思維,以觀察和總結自然規律為特徵,以物理學科為代表。
c.計算科學←→計算思維: 計算思維又叫構造思維,以設計和構造為特徵,以電腦學科為代表

3.CT的概念

CT的本質是抽象(Abstract)自動化(Automation)。它是如同所有人都具備“讀、寫、算”(簡稱3R)能力一樣,都必須具備的思維能力。

英文期刊https://www.cs.cmu.edu/~15110-s13/Wing06-ct.pdf

(1)CT的特徵

計算思維是甚麼
計算思維不是甚麼
是概念化
不是程序化
是根本的
不是刻板的技能
是人的思維
不是計算機思維
是思想
不是人造物
是數學與工程思為的思維與融合
不是空穴來風
面向所有人.所有領域
不侷限於計算學科

解說

範例

資料來源

http://mooc.zut.edu.cn/nodedetailcontroller/visitnodedetail?knowledgeId=3472021

(2)CT進一步理解

a.陳國良教授的理解

(1)計算思維是利用泛指的計算(CS、CE、C、IS、IT等)的基礎概念,求解問 題、設計系統、理解人類行為的一種方法(Approach),是一類Analytical Thinking。它融合(Share)了數學思維(求解問題的方法)、工程思維 (設計、評價大型複雜系統)和科學思維(理解可計算性、智慧、心理和人類行為)。

(2)計算時的抽象概念比數學、物理科學中的意義要豐富和複雜;抽象是分層的為此要定義介面和關係;抽象最終要在受限的物理世界中實現的。

(3)計算是抽象的自動執行;自動化隱含著需要某類電腦(可以是機器或人, 或兩者的組合)去解釋抽象。

(4)從操作側面上,計算涉及到回答“如何尋找一台電腦去求解問題?”隱含地回答此問題就是確定合適的抽象,選擇合適的某類電腦去解釋執行該抽 象,後者的過程就是自動化。所以計算思維的本質是抽象與自動化(2A)

(5)計算的三種驅動力是科學、技術和社會,三者互相作用影響:科學的發現催生技術發明促進社會應用;反之,技術發明產生新的社會應用促進新的科學發現。

b.唐培和教授的理解


廣西科技大計算思維導論

c.其他觀點

(1)ISTE

CT is a problem-solving process that includes (but is not limited to) the following characteristics:(CT是一個問題解決的過程,包括但不限於下面的特色)

Formulating problems in a way that enables us to use a computer and other tools to help solve them(把問題型塑成一個可以讓我們用電腦和其他工具去解決的樣子)

Logically organizing and analyzing data(有邏輯的組織和分析資料)

Representing data through abstractions such as models and simulations(使用模型和模擬,抽象化的表示資料)

Automating solutions through algorithmic thinking(透過演算法的思考將答案自動化)

Identifying, analyzing, and implementing possible solutions with the goal of achieving the most efficient and effective combination of steps and resources(以步驟和資源最有效益的整合為目標,確認、分析、實作可行的答案)

Generalizing and transferring this problem-solving process to a wide variety of problems(一般化和轉移這個問題解決過程到各式各樣的問題)

(2)other

澳洲資訊科技課程將運算思維 定義為「利用數位科技設計與實作演算解法解決問題的思維」(ACARA, ?2013)

英格蘭在運算課程中的定義則為「一種凌駕於電腦軟硬體之上,能針對系統與問題 提出思考架構的思維模式」(DOEE, 2013)

Google則將其定義為「一種包含許多 特性的問題解決過程,如:邏輯化的排序與分析資料、用循序的步驟產出解法,以及特定特質,如:能自信處理複雜度與開放式問題」(Google, 2015)。

(3)麻省理工副校長演講

計算思維的本質是抽象.自動化.演算法(3A)

(4)BBC

資料引用

http://www.bbc.co.uk/education/guides/zp92mp3/revision

(5)台灣

教育部:運算思維

運算思維與程式設計能力培養 講座:台灣師範大學 李忠謀

2016張昭鼎紀念研討會 ─ 創客時代所需的計算思維與科技教育 台灣大學資訊工程學系洪士灝教授

臺中市北區省三國小-運算思維

a.師大資工

綜合各種不同的定義,運算思維定義為「能有效應用運算方法與工具解決問題之思維能 力」

資料來源:國教院-運算思維與中小學資訊科技課程師-林育慈* 國立臺灣師範大學資訊教育研究所助理教授 吳正已 國立臺灣師範大學副校長

b.台大資工洪士灝教授的理解

計算思維中最重要的概念之一,是能夠將計算「抽象化」與「具體化」的能力,例如與影像相關的演算法那麼多,我不需要知道各種演算法長得什麼樣子,但我知道影像壓縮演算法可以幫我省下傳輸時間,影像辨認演算法可以幫我了解影像裡面有什麼物件(以上是抽象化),而這些演算法早已經有聰明的專家實作出來,我們可以透過網際網路,利用資料中心的雲端服務來使用這些演算法(這是具體化)。

會寫程式不代表一定懂計算思維,反過來說,懂運算思維不見得會寫好程式,那又如何?話說寫程式也只是初步,資訊世界還很寬廣,如果懂得資訊世界的運作,心中有運算思維之後,或許有人會想閱讀程式去更加理解資訊世界,或許有人會想學習用程式設計改變周遭世界,或許會想改進資訊系統的架構,或許會想到新的應用、新的商業模式,或許會用計算思維去解決各類學術研究上的問題,不要過於強調程式設計而框限住學習內容和未來的發展性


(3)CT進一步說明

(1)拆解 (Decomposition)

活動設計-拆解練習

哈佛大學公開課程計算機科學CS50

https://www.youtube.com/watch?v=yQVTijX437c

(2)模式識別(Pattern Recognition)

https://www.youtube.com/watch?v=SixLnIDV1yY

活動設計-規律性練習

遊戲學校找出規律性

(3)抽象化 ( Abstraction)

活動設計-抽象的概念練習

什麼是抽象?它是指把現實中的事物或解決問題的過程,通過化簡等方式,抓住其關鍵特徵,降低其複雜度,變為計算裝置可以處理的模型,是一種方法.也是概念

a.藝術領域

b.電腦領域

資料庫

繪圖

對圖1中一朵花進行分析,8個花瓣具有相似性,那麼可以把一片花瓣繪製(抽象)為圖2中的樣子(當然還有繼續抓特徵並繼續完善的餘地)。然後建模,即將8個花瓣圍成360°,每個花瓣圍繞下端的中心點旋轉45°即可實現。通過程式設計實現“自動化”繪製(如圖3),最終達到圖4的效果。如果繪製出來的效果距離抽象的物件(花)太遠,可以繼續修改完善圖2中的單個花瓣,直到滿意為止

原文連結:https://read01.com/RmPKmM.html

https://www.youtube.com/watch?v=RdzYOtxhuDc


(4)設計演算法 (Algorithm Design)

活動設計-演算法練習

 

 

總結

引自蔡淑玲老師研習簡報

(4)日常生活中的CT

人們在日常生活中的很多做法其實都和CT不謀而合,也可以說CT從生活中吸收了很多有用的思想和方法。我們來看一些例子。

CT
日常生活
演算法
食譜可以說是演算法(或程式)的典型代表,它將一道菜的烹飪方法一步一步地羅列出來,即使不是專業廚師,照著食譜的步驟也能做出可口的菜肴。這堙A食譜的每一 步驟必須足夠簡單、可行。例如:“將土豆切成塊狀”、“將 1 兩油入鍋加熱”等都是可行的步驟,而“使菜肴具有神秘香味”則不是可行的

模組化
很多菜譜都有“勾芡”這個步驟,與其說這是一個基本步驟,不如說是一個模塊,因為勾芡本身代表著一個操作序列——取一些澱粉,加點水,攪拌均勻,在適當時候倒入菜中。由於這個操作序列經常使用,為了避免重複,也為了使菜譜結構清晰、易讀,所以 用“勾芡”這個術語簡明地表示。這個例子同時也反映了在不同層次上進行抽象的思想。
搜尋
如果要在英漢詞典中查一個英文單詞,相信讀者不會從第一頁開始一頁頁地翻看, 而是會根據字典是有序排列的事實,快速地定位單詞詞條。又如,如果現在老師說請將本書翻到第 8 章,讀者會怎麼做呢?是的,書前的目錄可以幫助我們直接找到第 8 章所在的頁碼。 這正是電腦中廣泛使用的索引技術。

回溯
人們在路上遺失了東西之後,會沿原路邊往回走邊尋找。或者在一個岔路口,人 們會選擇一條路走下去,如果最後發現此路不通就會原路返回,到岔路口選擇另一條路。這種回溯法對於系統地搜索問題空間是非常重要的。
緩衝
假如將學生用的教科書視為資料,上課視為對資料的處理,那麼學生的書包就可以視為緩衝存儲。學生隨身攜帶所有的教科書是不可能的,因此每天只能把當天要用的教科 書放入書包,第二天再換入新的教科書。
多工平行
廚師在燒菜時,如果一個菜需要在鍋中煮一段時間,廚師一定會利用這段時間去 做點別的事情(比如將另一個菜洗淨切好),而絕不會無所事事。在此期間如果鍋堛熊皛搨n 加鹽加佐料,廚師可以放下手頭的活兒去處理鍋堛熊獢C就這樣,雖然只有一個廚師,但他可以同時做幾個菜。

(5)CT應用於各領域

(6)CT重要性及影響

隨著現代科學的形成和發展,人們對CT的作用和意義的認識也越來越提升。在目前的社會,使用CT考慮和陳述問題已經成為越來越熟悉和普遍的事實。CT成為一個現代人所必須具備的素質。周以真教授認為,CT是 21 世紀每一個人都要用的基本工具,它將會像數學和物理那樣成為人類學習知識和應用知識的基本組成和基本技能。當CT真正融入人類活動的整體時,它作為一個問題解決的有效工具,人人都應當掌握,處處都會被使用。而CT是無處不在的,提供了理解世界的智力工具,在人類社會中具有永久的價值。這些都肯定了CT在人類思維活動中 的地位以及在當前科學發展中的重要意義

資料引用參考網站


http://thefoos.com/wp-content/uploads/2015/11/Hour-of-Code-Curriculum-Trad-Chinese.pdf


http://labs.xjtudlc.com/cs4hs/2014/reading/jsswybcddjsj.pdf


http://www.wsbookshow.com/uploads/bookfile/201410/9787517023548_1.pdf


http://www.3dwoo.com/showBookDetail.asp?nb=41196


http://www.ccf.org.cn/resources/1190201776262/digital/cnccpdf/chenguoliang2011-12-12-10_03_14.pdf


http://mooc1.chaoxing.com/nodedetailcontroller/visitnodedetail?courseId=&knowledgeId=81787331

https://www.youtube.com/watch?v=Bb7kebfTwUY&index=2&list=PLcS355A8KwuUh574KJQOY_0qD9UKS1mHt

(7)CT相關活動.測驗.檔案

不插電的資訊科學下載

國際運算思維能力測驗

運算思維相關檔案下載

(8)CT相關網站

一、運算思維Computational Thinking相關網站
  1. Exploring Computational Thinking(Google for Education)
  2. CSTA Computational Thinking
  3. Computational Thinking for Educators
  4. Computer Science Unplugged
  5. 107 年課綱資訊科技意見討論交流園地
  6. Computational Thinking with Scratch
  7. 台灣運算思維FB
  8. Computational Thinking In Digital Technologies
  9. Bootstrap
二、相關影片
  1. CT at Google: Improving the World's Videos with Algorithms and the Internet
三、其他
  1. 親子天下(設計思考)
  2. 東海建築(設計思考)

(9)CT相關文件

https://computationalthinkingcourse.withgoogle.com/unit?lesson=8&unit=1

https://www.google.com/edu/resources/programs/exploring-computational-thinking/

http://blog.orangeapple.tw/posts/what-is-computational-thinking/

http://www.bauhinia.org/index.php/zh-HK/analyses/391

107資訊課綱討論

資訊通識教育以及計算思維的教學法(洪士灝教授)

賴和隆老師

張原禎老師

謝東森老師

呂聰賢老師

蔡淑玲老師

https://drive.google.com/drive/u/0/folders/0B0swnnubz1GbRUN3NXU4TVprUEE

https://drive.google.com/drive/u/1/folders/0B0swnnubz1GbUmNRekJQcDF5SVE"