Computational Thinking With Scratch

by WayneHuang in Circuits > Software

242 Views, 0 Favorites, 0 Comments

Computational Thinking With Scratch

logo-scratch.png
Mitch Resnick: Let's teach kids to code

緒論:

本課程所要探究的課程內容,是如何藉由Scratch的教學,進而培養學生的運算思維(Computational Thinking)能力。2016~2020資訊總藍圖規劃,運算思維(computational thinking)成為課程發展的一項重要綱領。雖然,運算思維所要強調發展,並非僅止於程式編輯一項,反而更是一個解決問題的思維發展模式。但是,在資訊教育的課程發展中,利用程式編輯的學習經驗,是足以作為培養學生發展運算思維的媒介工具。

Inside這篇文章曾經提到:曾任 TripAdvisor 軟體工程師、現任 LinkedIn 資深軟體工程師的 Yevgeniy Brikman 在其個人部落格發表「Don't learn to code. Learn to think.」一文,認為這股鼓吹大家學習寫程式的風潮有點誤導大眾,他認為大家在學習寫程式的同時,更重要的是學習電腦科學的思維模式。

MIT Media Lab 團隊的計劃執行長 Mitch Resnick 在TED演講中也說:重點並非是要將所有年輕人培訓成程式設計師,而是透過學習程式語言,開拓更寬廣的學習途徑。「當你學會閱讀,你便能藉著閱讀學習更多知識,程式設計也是一樣的道理;如果你會撰寫程式,你能透過程式語言學習到的事物將更為多樣。」學寫程式就是在學習創意思考、有系統的推論、和團隊合作,而這些技能不僅在各專業領域都受用無窮,更是生活中不可或缺的能力。

知識管理與運算思維

large.png
计算思维 Computational Thinking  by JULES (Chinese)

運算思維(Computational Thinking)

2006年3月,美國卡內基·梅隆大學計算機科學系主任周以真(Jeannette M. Wing)教授因提出並倡導「計算思維」(Computational Thinking) 而享譽計算機科學界。她在美國計算機權威期刊《Communications of the ACM》雜誌上給出並定義計算思維(Computational Thinking)。周教授認為:計算思維是運用計算機科學的基礎概念進行問題求解、系統設計、以及人類行為理解等涵蓋計算機科學之廣度的一系列思維活動。在她看來,「計算思維是一種普適思維方法和基本技能,所有人都應該積極學習並使用,而非僅限於計算機科學家。」

綜合上述,運算思維就是問題的解決策略,使用電腦、人或兩者都可以理解的方式來呈現問題的解決方案。(BBC:Introduction to computational thinking),蓋可分為下列部分:(參考:兒童程式設計 KidsCoding)

  1. 問題分解(Decomposition):
    breaking down a complex problem or system into smaller, more manageable parts.
    將複雜的問題或系統分解成更小、更易於管理的問題;進而能夠更容易理解與處理、維護。
  2. 模式識別(Pattern Recognition):
    looking for similarities among and within problems.
    為了讓解決問題更有效率,將每個小問題分別檢視,思考之前是否有解過類似的問題;比對問題、模式。
  3. 抽象(Abstraction):
    focusing on the important information only, ignoring irrelevant detail.
    只注意重要的細節,忽略不相關的資訊;
  4. 演算法(Algorithms )
    developing a step-by-step solution to the problem, or the rules to follow to solve the problem.
    設計簡單的步驟或規則來解決每個小問題。


利用知識管理進行運算思維的實務開展!

知識管理(KM,Knowledge Management)是網路時代的新興管理方法,管理學者彼得·杜拉克 (Peter F. Drucker) 早在一九六五年即預言:「知識將取代土地、勞動、資本與機器設備,成為最重要的生產因素。」受到1990年代的信息化(資訊化)蓬勃發展,知識管理的觀念結合網際網絡建構入口網站、資料庫以及應用電腦軟體系統等工具,成為組織累積知識財富,創造更多競爭力的新世紀利器。

所謂知識管理的定義為:在組織中建構一個人文與科技兼備的知識系統,讓組織中的資訊與知識,透過獲得、記錄、存取(分析)、更新、整合、創造、分享等過程,達到知識不斷創新的最終目的,並回饋到知識系統內,個人與組織的知識得以永不間斷的累積,從系統的角度進行思考這將成為組織的智慧資本。

知識管理是在於接受外界新的資訊後,利用知識管理的步驟:認知 、規劃、試點、推廣、制度化。將資訊轉變成為有效、科學的方法,透過有系統、有組織的策略,將知識轉化為經驗,經驗培養為能力。如果知識管理是人類社會的智慧生產模式,那麼運算思維則是生產過程的思維酵素。

從 Scratch 學習運算思維

2017-01-01 (2).png

ScratchED 網站中對於Scratch 學習運算思維的定義:(1) computational concepts, (2) computational practices, and (3) computational perspectives。從程式編輯的角度,正是:(1)程式設計概念 (Concepts);(2)程式設計技巧 (Practices);(3)程式設計觀點 (Perspectives)。

Scratch是一種具有物件概念的積木式程式語言,透過角色、行為與時間的不同搭配方法,藉由使用迴圈、條件和變數的程式編輯觀念來完成指派的行為動作或任務。

接下來將進入本課程探討的焦點,如何利用 Scratch 培養運算思維 (Computational Thinking)?

我們將從 ScratchEd 這些資訊教育專家所設計的 Scratch 課程,讓學生在實作中,學會運算思維。基於上述對於Scratch 學習運算思維的定義,我們將更深入探討關於定義中:概念 (Concepts)、實踐(Practices)、觀點 (Perspectives),所發散出來的教學策略與學習技巧。

運算的概念 (Concepts)~程式設計概念

  1. 序列(sequence):對某一個任務,確定一系列的步驟 。
  2. 迴圈(loops):重複執行相同的序列。
  3. 平行(parallelism):在同一時間讓許多事同時發生。
  4. 事件(events):一件事引發另一件事的發生。
  5. 條件(conditionals):根據條件做決定。
  6. 運算子(operators):支援數學與邏輯的表達。
  7. 資料(data):儲存資料、讀取資料與更新資料。

實踐作法 (Practices)~程式設計技巧

  1. 反覆地增加(being iteratively and incrementally):發展了一點點,試試看,然後再發展一些
  2. 測試與除錯(testing and debugging):確保事情能執行,發現錯誤並解決問題
  3. 重複使用與混合(reusing and remixing):在現有的專案或想法上做點什麼
  4. 抽象與模組化(abstracting and modularizing):探索整個問題與其他部分的連結

建立觀點 (Perspectives)~程式設計觀點

  1. 表達(expressing):了解「電腦運算」是一種創作的媒介,「我可以創造」
  2. 連接(connecting):體認到「與他人一起創造」和「為他人創造」的力量,「當我有機會接觸他人,我可以做不一樣的事!」
  3. 質疑(questioning):有能力對世界提出問題,「我可以(運用電腦運算)提問,並理解(電腦運算)世界!」


PS. 資料參考來源:

  1. 蔡淑玲老師 Coding for Fun
  2. 橘子蘋果 程式設計學苑
  3. 创意计算: Chinese Translation of the Creative Computing Curriculum Guide

說明:

ScratchED(http://scratched.gse.harvard.edu/) 是一個專門為 Scratch 教學者建立的線上社群,所有關於 Scratch 的教育工作者皆可以在這裡分享自己的資源,並取的相關的協助。

補充資源:

適合入門的 Scratch Jr

15780715_1340744182612897_2218395094621574218_n.jpg

ScratchJr (http://www.scratchjr.org/) 是一款適合5~7歲孩子學習編程的應用軟體,讓幼兒(5-7歲)創建自己的互動故事和遊戲。孩子圖形程式模塊的不同組合,可以使人物移動,跳躍,舞蹈,唱歌。孩子們可以藉由編輯文字,添加自己的聲音,甚至將自己的照片,然後利用程式使他們成為動態的角色。ScratchJr的靈感來自流行的程式設計語言(MIT Scratch),在世界各地已有數以百萬計的學生(8歲及以上)使用。透過 scratchjr,開發團隊重新設計了介面和程式設計語言,使它們適合較年幼的孩子,精心設計符合幼兒認知、個人、社會、和情感的發展特點。scratchjr 在 iPad 和 Android 平板電腦上已經提供免費的應用APP。關於ScratchJr的更多資訊,請連結http://scratchjr.org 官方網站。

ScratchJr 與 Scratch 不同之處在於,它更加生動,更加吸引使用平板電腦和智慧型手機的滑世代孩子。MIT 的Mitchel Resnick教授提道:我們想要讓孩子們不僅僅把平板電腦用作一個消費和瀏覽的工具。Mitchel Resnick教授是麻省理工大學媒體實驗室Lifelong Kindergarten的負責人,他們和塔夫斯大學的研究人員,以及蒙特利爾的Playful Invention公司一起開發了這款應用。

Resnick教授強調,雖然SratchJr非常精簡,但是它還是保留了最基本的電腦概念,比如事件、序列、以及反覆運算等這些Scratch程式設計的核心概念。

兒童程式設計 KidsCoding:適合5-7歲孩子的程式工具-ScratchJr

Scratchjr教程:操作界面说明

learninterface.png
scratch20151017.jpg
  1. Save:Save the current project and exit to the Home page.
    儲存:保存並退出返回主畫面。
  2. Stage:This is where the action takes place in the project. To delete a character, press and hold it.
    舞台區:程式主畫面,移動角色,如要删除請按住角色。
  3. Presentation Mode:Expand the stage to the full screen.
    全螢幕顯示。
  4. Grid:Toggle on (and off) the x-y coordinate grid.
    網格模式:打開、關閉(xy)座標網格。
  5. Change Background:Select or create a background image for the stage.
    選擇或創建背景。
  6. Add Text:Write titles and labels on the stage.
    舞臺上添加文字。
  7. Reset Characters:Reset all characters to their starting positions on the stage. (Drag characters to set up new starting positions.)
    重置角色在舞臺上的起始位置。(拖動角色來設定新的起始位置)。
  8. Green Flag:Start all programming scripts that begin with a "Start on Green Flag" block by tapping here.
    綠旗:按下綠旗「開始執行」。
  9. Pages:Select among the pages in your project — or tap the plus sign to add a new page. Each page has its own set of characters and a background. To delete a page, press and hold it. To reorder pages, drag them to new positions.
    頁面:點擊“+”以添加新頁。每一頁有自己的角色和背景。要删除一個頁面,長按。重新排序,直接拖動到新的位置。
  10. Project Information:Change the title of the project, see when the project was created, and share the project (if supported by your device).
    專案(主題)資訊:修改標題、查看項目資訊,分享。
  11. Undo and Redo:If you make a mistake, tap Undo to go back in time, reversing the last action. Tap Redo to reverse the last Undo.
    回覆或重作:如果要撤銷操作,返回上一步;如果要取消回覆,按重做撤銷動作。
  12. Programming Script:Snap blocks together to make a programming script, telling the character what to do. Tap anywhere on a script to make it run. To delete a block or script, drag it outside the programming area. To copy a block or script from one character to another, drag it onto the character's thumbnail.
    程式設計腳本:將各個程式積木塊組合在一起形成一個腳本,積木塊可以透過拖入、拖出來快速增删程式的執行命令。
  13. Programming Area:This is where you connect programming blocks to create scripts, telling the character what to do.
    程式設計區:放置程式設計腳本區域。
  14. Blocks Palette:This is the menu of programming blocks. Drag a block into the programming area, then tap on it to see what it does.
    程式設計塊選單,可選擇直接拖動到程式設計區。
  15. Block Categories:This is where you can select a category of programming blocks: Triggering Blocks (Yellow), Motion (Blue), Looks (Purple), Sounds (Green), Control (Orange), End Blocks (Red).
    程式塊分類:【觸發(黃色),動作(藍),外觀(紫色),聲音(綠色),控制(橙色),結束(紅色)。】
  16. Characters:Select among the characters in your project — or tap the plus sign to add a new one. Once a character is selected, you can edit its scripts, tap its name to rename it, or tap the paintbrush to edit its image. To delete a character, press and hold it. To copy a character to another page, drag it to the page thumbnail.
    角色:一次選擇一個角色進行編輯,點擊畫筆修改角色,長按删除,拖動角色到其他頁面實現複製。

ScratchJr 官方線上學習手冊

Scratchjr教程:繪圖編輯介面說明

paint-editor-guide_頁面_1.jpg
  1. Undo:Reverses the most recent change.
    撤銷:回覆到上一個步驟。
  2. Redo:Reverses the most recent Undo.
    重做:取消回覆。
  3. Shape:Choose a shape to draw: line, circle/ellipse, rectangle, or triangle.
    畫筆樣式(形狀):選擇一個形狀來畫:線,圓/橢圓,長方形,或三角形。
  4. Character Name:Edit the name of the character.
    角色名稱:編輯角色名稱。
  5. Cut:After selecting the Cut tool, you can tap a character or shape to remove it from the canvas.
    剪下 :選擇剪下可以點擊一個字元或形狀,從畫布上删除它。
  6. Duplicate:After selecting the Duplicate tool, you can tap a character or shape to create a copy of it.
    複製:圖章複製工具,選擇工具後點擊一個角色來複製。
  7. Rotate:After selecting the Rotate tool, you can rotate a character or shape around its center.
    旋轉角色:選定一個角色後,可以讓它繞著圖案中心旋轉。
  8. Drag:After selecting the Drag tool, you can drag a character or shape on the canvas. If you tap on a shape, you can then edit the shape by dragging the dots that appear.
    移動:選擇移動工具後,可以移動畫布上的字元或形狀.。如果按一下形狀,則可以通過拖動出現的點來編輯形狀.。
  9. Save:Save changes and leave the Paint Editor.
    保存:保存並離開編輯器。
  10. Fill:After selecting the Fill tool, you can tap any section of a character or shape to fill it with the currently selected color.
    填充:在選擇填充工具後,您可以使用現時選定的顏色填充角色或形狀來的任何部分。
  11. Camera:After selecting the Camera tool, you can tap any section of a character or shape, and then tap the camera button to fill the section with a new photo taken with the camera.
    相機:選擇相機工具,然後點擊角色或者形狀的一部分,點擊相機按鈕,用拍攝的圖片來填充,很有意思哦 !
  12. Color:Select a new color to use for drawing and filling in shapes.
    顏色選擇區。
  13. Line Width:Change the width of the lines in the shapes you are drawing.
    線條粗細:改變線條寬度。

官方說明手冊

Scratchjr教程:認識ScratchJr 的積木塊

block-descriptions_頁面_1.jpg
block-descriptions_頁面_2.jpg
block-descriptions_頁面_3.jpg

ScratchJr的積木模塊區分為:事件(觸發)指令、動作指令、外觀積木、聲音積木、控制積木、結束積木。以積木的顏色區分。

  1. 事件指令:黃色積木。
    綠旗啟動、點擊角色啟動、角色碰觸啟動、訊息啟動、發送訊息。
  2. 動作指令:藍色積木。
    向右移動、向左移動、向上移動、向下移動、順時針轉動(每次30°)、逆時針轉動(每次30°)、向上跳、回到起始位置。
  3. 外觀積木:粉紅色積木
    說(話)、變大、變小、隱藏角色、角色出現。
  4. 聲音積木:綠色積木
    播放POP聲、播放錄音。
  5. 控制積木:橙色積木。
    等待時間(1表示0.1秒)、停止程式、改變角色的動作速度、重複執行。
  6. 結束積木:紅色積木。
    結束、一直循環、切換至頁面...

更多內容請詳見 簡單學 ScratchJr 入門 或 官網積木塊說明!

​認識 Scratch!

2017-01-01 (2).png

Scratch是由MIT(美國麻省理工學院)所研發的兒童程式編輯工具,透過電子積木的形式,增加了學習過程的樂趣,讓學生從樂趣中體驗程式編輯的思維模式,亦是目前最為廣泛應用於教學現場的應用工具。

Scratch的開發目的:在讓程式設計語言初學者不需先學習語言語法便能設計產品。開發者期望通過學習Scratch,啟發和激勵用戶在愉快的環境下經由操作(如設計互動故事)去學習程式設計、數學和計算知識,同時獲得創造性的思考,邏輯編程,和協同工作的體驗。(維基百科)

更多 Scratch或程式編程課程的資源,如下列表:

  1. SCRATCH-TW
  2. 十四個自學Scratch 最完整的公益開放課程
  3. 宜蘭縣教師課程數位學習平台
  4. 兒童程式設計 KidsCoding

關於Scratch與運算思維除了前述的探討之外,在 ScratchEd 討論區上,Natalie Rusk 在 2017/1/5日分享了一份PDF。標題是Computational Concepts Supported in Scratch (2017) ,介紹了Scratch 與運算思維(程式設計)相關的概念、解釋與積木範例。台灣方毓賢老師亦分享了中文 PDF 檔。中文亦可參考:Scratch與運算思維(Computational Thinking)這篇文章。

對於在台灣或使用繁體中文的初學Scratch學生,或者是準備開始進行Scratch教學的教師,我們非常建議您從 SCRATCH-TW 作為學習Scratch的入口,同時追蹤 Scratch-TW 粉絲專頁訊息或加入 S4A社團參與討論。

下載與安裝 Scratch 2.0

Scratch 除了可以直接進行線上的編輯與應用,也可以透過離線下載 Scratch 2.0 離線版( https://scratch.mit.edu/scratch2download/ )做為程式編輯平台。

注意:下載Scratch離線版安裝檔後,依指示安裝即可,過程中會要求安裝〔Adobe AIR〕,請按【確定】即可安裝完成。