00本課程的核心

本課程的核心 - Computational Thinking

Computational Thinking (翻譯為 : 計算性思維【運算思維】),是一種用電腦的邏輯來解決問題的思維我們的目標不僅是教會學生使用電腦,抑或是在計算上的速度與精準度,而是在學習Scratch的過程中,建立基礎概念,從實作中學習,訓練學生「表達」、「溝通」 、「提問」的能力。

Scratch是一個免費編寫程式的軟體,學生可以使用他盡情發揮創意,創建屬於自己獨特的故事、互動性遊戲和動畫,讓學生在學習Scratch的同時,也建立起程式設計的基礎概念。而Scratch的開發始祖 - 麻省理工多媒體實驗室 (MIT Media Lab),在2011年提出了一套Computational Thinking的架構,分為 “Concepts”, “Practices”,  “Perspectives” 三個層面。


 

 

程式設計概念 Concepts

在學生學習程式設計的過程中,可區分為七個非常基本的大概念,以下將講述七個概念,並提供範例。學生學習了這幾個概念後,不只適用於Scratch,未來用於其他的程式語言也非常有幫助。

Sequence(序列)、
Loops
(迴圈)、
Parallelism
(平行)、
Events(事件)、
Conditionals(條件)、
Operators(運算子)、
Data(資料)


●   Sequence(序列):

一個特定的動作能被細分並表示成各個步驟或指令,依序執行,例如轉一圈後說Hello!,可由下圖所示的指令達成。

Identifying a series of steps for a task.

●    Loops(迴圈):

對同一個序列或動作重複執行,我們將上述旋轉一圈的指令利用重複4次表示,可將原本的八行指令縮減為三行,使指令更簡潔。

Running the same sequence multiple times.

●   Parallelism(平行):

電腦可以一邊播放音樂,一邊瀏覽社群網站,多個程式同時被進行。

平行就是多個指令同時被執行。以下範例是同時移動、改變特效及發出聲音,同時執行使角色有跳舞的感覺。

Making things happen at the same time.

●   Events(事件):

事件,指的就是一件事觸發一個/多個應對機制,例如:當角色被點下時,觸發「說 Hello 兩秒」。

舉個實務上的例子:當要登入facebook時,輸入完帳號密碼後,按下登入,就會觸發將帳號密碼送出。

One thing causing another thing to happen.

●   Conditionals(條件):

當電腦在播放音樂時,如果暫停鍵被按下,音樂就會暫停,等到播放鍵被按下才會繼續播放。

程式會依據設定的條件式,做出判斷(例如:如果...否則...)。

Making decisions based on conditions.


●   Operators(運算子):

當我們在計算機上依序按下 , , ,最後再按下 時,計算機就會進行數學式的計算,並得到結果 13 顯示在畫面上。

運算子即是做數學運算(例如:+、-、*、/)或邏輯運算(例如:<、=、>)。

Support for mathematical and logical expressions.


●   Data(資料):

當我們在玩遊戲時,會有時間倒數、得到的分數、獲得的寶物...等,用來記錄遊戲過程中的資料。可以是單一個數值,如「剩餘時間」,也可以是放在一起的多個資料,如「寶箱內的寶物」。

Data 就是用來記錄,可做儲存及修改。Scratch可用變數(用來儲存單一數字或字串)以及清單(可以儲存多個數字或字串)來存資料。

Storing, retrieving, and updating values.


程式設計技巧 Practices

在帶領學生實作Scratch專案,我們設計了四種活動,利用活動進行的過程,來提高學生的參與度、激發創造力、訓練主動思考。未來不只是在用在開發程式專案,各個領域的發展皆會有幫助。

  • Experimenting and iterating(實驗和迭代):
    「迭代」在程式設計的過程中,扮演了舉足輕重的角色。在面對難解、複雜的需求時,我們往往無法一次到位,一下就做出期望的功能。但是我們可以透過一種漸進開發、逐步測試的過程,有系統、有方法地一步步邁向目標功能。
    在 Lesson 7 的教案中,我們會先拋出一個想法 "jump",問學生該如何讓角色跳呢?再讓學生去嘗試,慢慢的實驗,找出方法,待有初步的結果(角色能向上移動再向下移動),接著再引導學生開發更多,如讓角色有重力的感覺。
    Developing a little bit, then trying it out, then developing more.

  • Testing and debugging(測試和除錯):
    當程式執行時,出現問題或是沒按照預想中的執行,試著發現和解決它,可以依循著以下的步驟。
    Making sure things work — and finding and solving problems when they arise.

    • 發現問題

    • 閱讀並了解所有指令的意思

    • 實驗看看

    • 嘗試寫出正確的指令

    • 找到正確的答案

  • Reusing and remixing(重用和混合):
    在已有的專案中進行加強或是加入更多的想法,我們可以在Scratch的網頁上找到許多有創意的專案,這可以幫助學生發想,引用他人的專案再加入自己的點子,改造成一個新的專案。
    Making something by building on existing projects or ideas.


  • Abstracting and modularizing(抽象化和模組化):
    將大的區塊,切開成多個小的模組,模組化讓他人方便閱讀與理解,在測試除錯上也更好管理。如下範例,第一個模組設定時間由60秒倒數,第二個模組設定分數,第三個模組則是設定造型的改變。
    Exploring connections between the whole and the parts.




程式設計觀點 Perspectives

學習此套課程後,我們希望學生在表達、溝通以及提問上有更顯著的進步。透過學習Scratch,更為了解自己、增進團隊合作的能力。

  • Expressing(表達):
    生活中有越來越多能夠具體發揮創意及想像力的工具,例如修圖軟體 Photoshop,可以將照片中的人物修得美美的,再加上創意文字,讓圖片更加吸引人。
    透過學習Scratch,讓學生了解到電腦是創造的媒介,能利用電腦表達出自己的想法。
    Realizing that computation is a medium of creation, "I can create."

  • Connecting(溝通):
    子曰:「三人行,必有我師焉」,讓學生透過與團體的溝通互動,多多學習他人的優點,汲取他人的意見,有助於創造出更棒的作品。
    Recognizing the power of creating with and for others, "I can do different things when I have access to others."

  • Questioning(提問):
    更能精準、明確的提出問題,幫助個人或團隊快速鎖定目標並解決問題。
    Feeling empowered to ask questions about the world, "I can (use computation to) ask questions to make sense of (computational things in) the world."



Reference:

Comments