培養運算思維,不插電也能學程式
現代人的生活和3C產品離不開關係,程式設計也在108年納入新課綱,因此許多人開始重視程式設計的學習。不過在學習程式語言的這條路上,大家有各自的疑慮和擔憂,包含師資不足?要讓孩子這麼早接觸3C?如果英文不好是不是就不能學程式設計?又該學哪一種電腦語言?在學次方,我們也很重視這個問題,畢竟學次方老師自己就是理工背景出身,多少都碰過程式語言,也曉得程式語言的精妙之處,但回應到最原始的問題:「『學程式語言』是什麼?真的每個人都必須要『會程式語言』嗎?」
電腦程式語言百百種,語法不同、用法不同、著重的點也不同,回過頭來思考,我們決不可能在很短的時間內教會孩子所有的程式語言,但有件事情是我們可以讓孩子內化,並且適用於未來任何領域的思考習慣──「運算思維」。
所謂運算思維分為四個基礎:「分析(Decomposition,將複雜的問題拆解成容易理解與分類的部分)、模式識別(Pattern Recognition,找出問題之間的相似之處)、抽象(Abstraction,將重要的部分列出、忽略不要重要的部分)、演算(Algorithms,為每個問題找尋解決的步驟)」,而這四個基礎若撇開程式語言撰寫的部分,套用在生活中也仍有許多具象對應之活用方法。
學次方的不插電程式設計課,便是依照這四個基礎,搭配美國行之有年的K-12程式教育課綱設計而來。
具體化演算法程序,遊戲中學習運算思維
10歲以下孩子的抽象思考能力尚在發展階段,因此我們透過實體遊戲或實作的方式協助孩子建立程式設計的各項基礎邏輯。學期初,我們透過人體拼圖來認識「指令傳遞」,藉由解構日常生活事件(如:換鞋、刷牙)來學習「解構」,以一天的時間及事件序來建構「序列」的概念。
在孩子漸漸熟悉這樣的思考模式後,再以遊戲的方式讓孩子將演算法的程序具體化,透過動手操作學習運算思維。漸漸的孩子能夠在程式編碼時發現當出現大量重複性動作時程式碼會變得很冗長,這時「迴圈」的概念就能很自然的被帶入。
孩子一看到貝式潔牙法,馬上就說這和自己學的刷牙法一樣!我們便讓孩子將每個步驟拆解與排序,也這樣讓孩子知道這就是生活中的排序運用。
類似的遊戲越變越複雜後,孩子就會開始覺得想要簡化動作,也開始將「迴圈」的概念放進來、試圖簡化要做的動作;而進階班的孩子,碰到的指令又相對更加複雜,也因此納入「變數」及「條件判斷」,讓自己編寫出來的指令動作變得更精簡了呢。
結合生活實例,學習邏輯思考工具
在學習演算法時,也有許多不可或缺的工具必須了解。首先是「文氏圖」,文氏圖是在數學中常用到的分類工具,裡面蘊含的是交集(and)、聯集(or)與差集(xor)的應用,在課堂裡我們利用桌遊《Specific》中的動物習性來學習分類。
接著是利用電視分級機制來介紹「決策樹」,讓孩子在活動中透過逐步檢驗能讓事件處理更有脈絡。另外,生活中常見的開關符號0和1也是學習二進位前用來協助孩子搭建學習鷹架的方式,孩子學會二進位的算法後,還自己出了題目要給媽媽挑戰呢!
期末驗收,從不插電到插電
期末的最後一堂課,我們透過上機的方式,讓孩子將這學期學到的知識和技能透過設計機器人的行為程式來呈現。電腦在最後一堂課才出現為的是不讓3C產品的聲光效果搶走孩子靜下來思考的時間,也是讓孩子知道自己真正擁有程式設計的能力,上機之後的挑戰,孩子還嚷嚷著太簡單呢!