還記得2018創立太陽實驗室時,跟夥伴討論時,他說:「我們要教的是運算思維,不教程式。」那時候,跟家長講我們不是教程式的機構,而是教運算思維,很少家長知道什麼是運算思維,常常還需要解釋運算思維是什麼?花了不少時間說明,想想當初應該辦一些講座演講,應該可以省下一些時間。
家長聽完後,有問到:「那為什麼不學程式就好?聽起來這樣也可以學運算思維啊?」難道程式當中學變數、學函式不是在學運算思維嗎?其實當下,我也有點困惑,再看了許多國外的文獻,甚至去拜訪學者請益,不斷討論思考後,了解當中的關係,有種豁然開朗的感覺,重點不在於學不學、教不教程式,而是教學的方式。
在講教學的方式之前,需要先釐清運算思維與程式之間有什麼關係?簡單講,運算思維是一個系統化解決問題的思考方法,而透過程式只是其中一種透過電腦來解決問題的表現方式,一個是思考方法,一個是表現方式,思考方法是凌駕在表現方式之上;更進一步,當具備運算思維思考方法時,是不是要透過電腦來解決問題,就不一定了。了解兩者間的從屬關係後,再回到前面所提到的教學方式的影響。
面對複雜的問題,如果能夠拆解成較小的問題,逐一克服,這是一種較容易的處理方法,也是運算思維四大元素之一。在引導孩子學習的過程,可以先從他們生活周遭的事物著手,比方寫下刷牙的步驟、準備早餐的步驟,透過這些熟悉的事物來練習,不用特別學習相關知識,可以幫助他們專注在分析拆解能力的培養。逐步可以開始嘗試越來越複雜的問題拆解,比方寫作文,多位數的乘法,甚至是歷史事件,這些都是不用程式來學習拆解。
同時可以透過code.org上的許多免費資源,讓孩子逐漸從資訊科學Computer Science(CS)的角度去學習應用問題拆解。
模式識別是我家小朋友最喜歡的一件事,當然,他們並不知道自己正在學模式識別,對他們而言,就是「大家來找碴」,看著一堆類似的圖形,仔細去找出相似與相異的點;看著逐漸變化的圖形或數字,去推斷接下來圖形的樣貌或是數值,從這當中,去培養觀察力與推理的能力。找出規律性,像是嘗試排出讀書計劃表,都是訓練模式識別思考方式的好方法。
在程式上學習時,在觀察問題時找出相同的模式,透過呼叫函式或是迴圈的方式,有效提高程式的執行效率,這些都是模式識別的實際應用。
抽象化這名詞,對於小朋友來說,真的是個很「抽象」的字,但是如果從英文來看,Abstract本身除了抽象,還有摘要的意思,用白話來說就是「抓重點」,要進行這樣的練習,可以配合前面提到的模式識別,不同的是,除了找出相似的共通點外,更進一步從這些共通點,去創造出新的角色。像是孩子們喜歡的超級英雄,可以挑選幾位超級英雄,讓他們去觀察思考,超級英雄們的共通點,之後要求利用這些共通點,去創造一個自己的超級英雄,這是抽象化思考的練習;另外像是學習聽完一段話、看完一篇文章後,要求用幾句話講出重點,也是很好的練習,甚至是未來在職場上也常常需要這種能力。
在程式學習上,抽象化的概念常常被應用,像是變數的宣告,甚至是物件導向程式中,物件的描述,都是抽象化的實際應用。
演算法就是把步驟講清楚,一步步寫好,讓任何人都可以根據寫出來的演算法,順利做出相同的結果,做演算法的練習,常常會應用到前面講得幾個元素,像是拆解步驟,找出模式,進而描述作法,一開始還是先從孩子容易想像的生活周遭著手,像是前面提到的刷牙,當拆解出每個步驟後,可以帶著討論哪些步驟是可以調動的,不會對結果有影響,哪些是一定要做?哪些是有先後順序的動作,這都是培養演算法設計的能力。
在程式學習上,好的演算法可以讓執行效率提高許多,將步驟一步步寫出來是最基本的,如何簡化步驟並且得到想要的結果,便需要演算法設計。
簡單地說明運算思維,並且提出透過日常生活的點點滴滴,讓孩子從他們身邊可以具體想像的事物為出發點去進行運算思維四大元素的思考練習,逐漸培養系統化思考的習慣,逐步從具體事物發展到抽象形而上的問題,進而透過程式語言去實際應用。是不是有種「天下道理,一旦悟道後,其實都是相同的道理」的感覺?如果在教學時,能夠跨學科的提點當中的共通性,不光是單科目單點式的學習,就更能蹴類旁通,打通思考的任督二脈,更了解自己現在在學什麼?以及實際的應用與價值。
希望透過這樣的介紹,讓大家了解運算思維與實際解決問題方法的關係,也許當了解這些後,未來在教授或是學習程式語言,都有進一步的領悟,不再只是冷冰冰的電腦語言,而是跟生活各項問題息息相關的系統解決方式。
文章同步刊登於玩具腦駐站專家
Cookie | Duration | Description |
---|---|---|
cookielawinfo-checkbox-analytics | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics". |
cookielawinfo-checkbox-functional | 11 months | The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional". |
cookielawinfo-checkbox-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
cookielawinfo-checkbox-others | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other. |
cookielawinfo-checkbox-performance | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance". |
viewed_cookie_policy | 11 months | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |
1 Comment
Comments are closed.