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


一.前言

二.思維活動

Q1:運算(計算)?思?

解說:

“0 和1”==>符號化==>計算化==>自動化思維

 

活動設計1-"0與1"思維活動

翻牌遊戲(程式設計:力行國小顏國雄老師)

解說:

遊戲規則:牌蓋上是0表示.牌掀開用是1表示..試看看01001?


活動設計2- 語義(問題)符號化思維活動(實際的問題轉換為符號及數學問題)

範例1:

『爸爸有6個蘋果,拿走3個還有幾個?』

解說

1.具體問題符號化(抽象化)==>『爸爸有一個箱子叫做A,裡面有6個蘋果,拿走了3個,裡面還有幾個?』

2.將數學問題改為程式語法==>箱子A=6.算出A-3的答案

3.將程式語法利用程式語言實作==>

小知識:

1.符號化:實際問題轉化為數學問題,建立數學模型的過程.符號化超越了實際問題的具體情境.這是數學活動和數學思考最本質的東西

2.A=6其實是一個指定敘述(賦值),[=]符號其實不是等於

範例2:

請預測下面程式碼片段執行後的結果或目的

A.

B.

C.

解說:

程式執行時,我們請使用者輸入任何一個數字,然後判斷(if a < b)是不是對的,如果是對的就顯示小於10,如果是錯的(else)就顯示大於或等於10。這就是預測與邏輯判斷。 雖然你看到的是一個短到不行而且好像沒什麼用的程式碼,但是這觀念確是所有程式設計的最底層核心,也是運算思維最重要的一環。任何偉大的程式,都是從一行程式開始別認為預測和邏輯訓練很簡單,它是所有運算思維及程式設計的基礎,把它融入到日常的課程中而不須獨立出來

資料引用:輕鬆的運算思維

範例3:

線上程式編譯網站:
https://repl.it/languages/python3

【練習1、簡單流程控制】
程式碼範例:
詢問使用者是否關閉電腦,
回答是則顯示「關機程序開始!」、
回答否則顯示「電腦將繼續運作」。
最後顯示訊息「謝謝你」

answer = input('can I shut down the computer?')

if ( answer == 'y' ) :
print ('Shut down started!')

else :
print ('Computer will keep going.')

print ('thank you')

【練習2、巢狀流程控制】
程式碼範例:

由使用者輸入兩張卡片的顏色分別是red或black,
若兩張都是red,則顯示「match!」、
否則則繼續檢查兩張是否都是black,如果是則顯示「match!」,
如果上述情形都沒有發生,則顯示「not the same」

最後顯示訊息「thank you」

card1 = input('Please input the color of 1st card (red or black) : ')
card2 = input('Please input the color of 2nd card (red or black) : ')

if ( card1 == 'red' and card2 == 'red') :
print ('match!')

else :
if (card1 == 'black' and card2 == 'black') :
print ('match!')
else :
print ('not the same')

print ('thank you')

資料引用https://sites.google.com/a/ntjh.ntct.edu.tw/cs-withorwithout-computer-2-0/05-flowofcontrol/05-2-shi-yongpython-shi-xian-liu-cheng-kong-zhi


Q2:"運算(計算)"重要?還是"思維"重要?

活動設計3-運算(計算)化思維活動

Large Number

http://icm.mcs.kent.edu/research/bignumdemo.html

解說:

“人”計算vs. “機器”計算之差別?

人進行計算:

1.規則可能很複雜, 但計算量卻可能很小
2.人需要知道具體的計算規則

機器計算:

1.規則可能很簡單, 但計算量卻很大
2.機器也可以採用人所使用的計算規則


活動設計4-自動化思維活動

Wolfram 簡介(計算知識引擎)

https://www.wolframalpha.com/

https://www.wolfram.com/programming-lab/

範例

1.積分範例

integrate e^x sin x dx from x=0 to pi

2.解微分方程式

CV'(t) = -V(t)/R

解說:

自動化看成一個「人機合作」的任務, 因為任何一個自動化系統沒有人的介入是不會成功的! 同時人類有許多珍貴的能力是機器達不到, 但卻可以大大的提高生產力!

因此, 擺脫「人是需要被自動化所取代」的思維, 轉而思考更具創造力與生產力的「人機合作」模式


三.運算(計算)思維(Computational Thinking;CT)

1.運算思維的概念

科學與思維

一般而論,三種科學對應著三種思維:

a.理論科學 ←→理論思維: 理論思維又叫推理思維,以推理和演繹為特徵,以數學學科為代表。


b.實驗科學 ←→實驗思維: 實驗思維又叫實證思維,以觀察和總結自然規律為特徵,以物理學科為代表。


c.計算科學←→計算思維: 計算思維又叫構造思維,以設計和構造為特徵,以電腦學科為代表

CT定義

A.提出CT概念周教授觀點

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

結論

1.是甚麼?不是甚麼?

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

像計算機科學家一樣的思考

計算思維是一種思考方式,是用計算機所能有效執行的方式來對問題進行表述並提出解決方案——這裡所說的「計算機」既可以指機器,也可以指人。換句話說,計算思維也是一種解決問題的方式。那什麼是計算機科學呢?

2.本質

3.重要性

它是如同所有人都具備“讀、寫、算”(簡稱3R)能力一樣,都必須具備的思維能力。

 

4.範例

如果你要做一頓飯,既要煮飯又要炒青菜炒肉,但又不能做好菜了但飯還沒煮熟,要怎麼做?這三項任務都需要花費資源和時間。在做飯這件事上,你就相當於一個作業系統。我們在計算機科學中所學習的,正是如何調配有限的資源,完成所有任務

B.麻省理工教授觀點

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

C.Google

D.BBC

資料引用http://www.bbc.co.uk/education/guides/zp92mp3/revision

E.台灣資訊科技學者

教育部:運算思維

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

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

 

E.人人心中都有自己的運算思維

Q3:你心目中運算(計算)思維是什麼?

分解(析)它、抽象化它、模組化它,設計Step by Step的方法

 

結論

2.如何學習或培養運算思維

Q4:一定要透過程式設計才能學習運算思維嗎?教學生寫程式就會有運算思維嗎?

解說:

1.運用程式設計來教運算思維,訓練邏輯,是一種比較利用簡單的方法。學會程式碼應該不是我們的目標。 電腦與程式只是一種工具,是一種達到目的的方法。真正的目標應該是學會思考的方式。 換句話說,我們應該嘗試教授計算機科學,而不是教寫程式代碼。代碼無處不在

2.學寫程式,不再是面對難懂的文字符號,而是培養邏輯、勇於嘗試、實現創意的過程,你準備好進入這個新世界了嗎?

3.圖形化程式語言轉化為文字型

活動設計5-運算思維活動

(1)拆解 (Decomposition)-從英文字的字面意義,就是指「分解」,延伸解釋就是面對一個複雜問題、任務或專案時,能將資料、程序、問題拆解成較小、較易處理的部分。解決每一個小問題後,原先複雜的問題即被解決了。

分解練習

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

(2)模式識別(Pattern Recognition)- 模式辨識的定義就是在一群資料中(可以數字、文字、圖形、照片等不同形式)觀察樣式、趨勢或規則,以對資料進行描述、解釋、辨識、分類的過程

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

規律性練習

遊戲學校找出規律性

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

 

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

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


(4)設計演算法 (Algorithm Design)-運算思維所談的演算法是指產出有序指令以解決問題或完成任務的思考過程。設計演算法時應包含步驟(steps)與規則(rules),步驟能提供程序與引導,完成任務則需依據原則執行

說明

範例食譜-請檢驗以下的圖示是否滿足演算法的5項特性

說明

範例1-找最大值

找出 {23, 5, 33, 7, 82} 這幾個數字中的最大值。如果你是電腦,會怎麼做呢?

寫出演算法

1.先將最大值的初始值設為 0 。
2.如果最大值和 23 比較、發現 23 大,就把 23 設為最大值。(此時最大值被改成 23)
3.如果最大值和 5 比較、發現 5 大,就把 5 設為最大值。(此時最大值仍為 23)
4.如果最大值和 33 比較、發現 33 大,就把 33 設為最大值。(此時最大值為 33)
5.如果最大值和 7 比較、發現 7 大,就把 7 設為最大值。(此時最大值仍為 33)
6.如果最大值和 82 比較、發現 82 大,就把 82 設為最大值。(此時最大值為 82)
7.將最大值的結果印出來

程式語言實作

範例2-河內塔動畫下載

 

規則

演算法


3.CT與各領域關聯及其應用

Q5:要學好運算思維需要什麼基礎呢?


4.CT參考相關網站