2019年10月9日 星期三

在2019年,談「兒童程式教育」之我見




一個程式師媽媽的嘆息-兒童程式教育之我見
(原作者:唐瑤瑤 / 臺灣大學計算機及資訊網路中心程式設計組程式設計師)


108課綱正式上路,科技領域、運算思維與程式設計教學如火如荼地展開了,說是各大門派、各個山頭百花齊放都不足以形容那個熱烈的程度。對於如何在學校實施教學,也都可以看到多有不同的看法與觀點。不能說誰講的是不對的,其實大家對於資訊教育都有一鼓熱情(我常常說這些都是熱血笨蛋,包括我自己也是),都是在用自己的力量在努力著。

這篇三年前的文章,似乎是反對程式教育在學校的實施,又或者是對於資訊老師的能力表達了一股不信任之意,乍看之下其實難免觸動一些敏感的神經,容易造成不必要且多餘的誤會。

就我的看法嘛,其實它的內容,還是有值得參考、借鏡以及提醒我們的,有一些盲點趁機透過解釋來釐清,也是不錯的啊。

會發現任何一種程式語言本身都不難,甚至基本精神架構都差不多。通常困難點是對問題了解的程度(包括拆解問題模組、解決問題的能力)、問題的複雜度、系統流程控制、甚至是使用者因素。所以個人認為數學邏輯力是寫程式的基本能力,但除非你是要幫華爾街寫演算法,否則並不會用到很艱深的數學喔。』

不管是常常在相關的研習被提到的運算思維核心:問題拆解、模式辨別、抽象化與演算法,還是一直被強調的問題解決能力,我們都同意數學的邏輯能力是很重要的基礎,能夠用程式語言去實際解決一件任務當然是好事,但是在「兒童程式教育」上的重點,並不在於得趕緊讓孩子選擇學習特定的程式語言了。(曾經聽到有人在討論孩子該學Python好還是Java好,還煞有其事地討論著不同語言的優缺點,我都不禁懷疑起自己的耳朵了…)

運算思維的四大核心示意圖

但若不想以此為生,可以多學些其他語言,像是英語、西班牙語、德語、越南語等,和真實的人類溝通要比和電腦溝通有趣,不要把自己侷限在一方螢幕裡。』

在各國都方興未艾(覺得自己很會用成語)地把程式語言列為第二外語的時候,我們這些大人難免會覺得焦慮或擔心,萬一如果搞不好很可能不小心因為我們沒把程式教學給教好,孩子們就可能喪失競爭力、失去什麼重要的適應未來的什麼能力之類的,這樣是不是很不好啊怎麼可以放任這種事發生!就算我自己是資訊老師,我還是得說,喜歡寫程式、學會寫程式當然很好(以下省略到底有多好的解釋2萬字),但是把這個能力當成唯一、變成宗教式的信仰來鼓吹,其實有點太過了。

其實個人針對兒童時期的觀察,邏輯能力其實用紙筆就可以,桌遊、紙牌都是很好的訓練。休閒娛樂在真實的人群裡才有溫度,虛擬的網路世界會造成疏離及冷漠。我懷疑兒童沒有更值得花時間去做的事嗎?像是學習舞蹈、樂器、親近大自然或飼養小動物?解決問題的能力更應該在日常生活及大自然中訓練,只是我常見到一台平板就能讓孩子安靜的度過一天。』

不插電(unplugged)的教學,在近幾年已經是一門四處可見的顯學。難免有人擔心,只是一味地不插電,沒有真實地與程式設計連結,淪為紙上談兵豈不是太過小看資訊的世界了。我想啊,讓孩子們先利用不同的媒介認識邏輯,有了基礎之後再動手寫程式,過程可以是好幾年的時間,到底我們這些大人在急什麼呢?

其實資訊科學就是生活,帶著孩子們在現實世界中培養觀察周圍現象的習慣,他們因為認識過資訊科學,能夠發現可以應用得到這些概念的場合,或是因為有了運算思維的基礎對於這些事物能有不一樣的看法,我認為對於大部份的孩子而言,這比能不能以程式設計的方式「實作」還重要得多了。

從排隊塞車現象看資訊科學,在「什麼啦!這也是資訊科學」一書中有提到,更進階一點還能從CPU排程的角度來討論


話說回來,如果兒童連if、else、end、while等英語單字意思都不懂,或者在數學中的= equal,和程式中的 = assign 會被混淆的話,建議不需要過早接觸。』

我常常在課堂中提醒學生,日後想好好地深入學習資訊的話,數學英文都是不可或缺的基本能力。兒童的英語能力本來就不會太好(國高中的老師表示…)之前,當然不適合直接學習文字型的程式語言,我想這點大家應該沒什麼意見,所以有積木式的、中文化的界面很好(對,就在說你這隻小貓!),用遊戲的方式練習基礎的程式概念也很棒,但是我想提醒大家的是,以後我們要帶著孩子動手寫程式的時候,也千萬別忘了數學基本觀念的認識與引導

舉例來說,變數的設定是學寫程式的第一步沒錯吧?原作者文章中所提變數的賦值、equal跟assign的分辨,我們花過多少時間帶著孩子認識跟了解之間的差別?還是我們只是用簡單幾個口令就帶過了?我們是要急著教會學生使用重覆結構、寫出很厲害的迴圈,還是應該先讓他們認識這些觀念、擁有使用它們的邏輯?
迴圈的經典案例:河內塔(大誤)


兒童在使用3C、電腦時,若沒有家長在旁督導(老師都不見得顧得到),他們很快會受這虛擬世界吸引,商人餵他們什麼都直接買帳,完全沒有過濾也不需要思考。我們本來希望能培養邏輯觀念強、會思考的未來人類,結果很可能是提早毀了他們的身心。個人的建議是在兒童閱讀能力及數學邏輯基本觀念未培養完成前,請不要給他們電腦(3C)。先學會親近自然、愛好藝術、多多閱讀會是我個人的選擇。』

這篇文章寫到最後,又讓我想到常常在演講中被問到的問題:「小學的孩子們應該多早開始學程式設計?」

不變的回答,也是我一直以來未曾動搖的理念。我覺得比起坐在電腦前面,孩子們應該先做的事是擁有良好的閱讀習慣。對於文本的理解、摘取重點、用自己的方式與觀點傳達裡面的內容,也都是在訓練他們日後理解問題、拆解問題、設計問題解決方式的過程。

這個時候如果有這樣的讀物,除了本身就是很好的閱讀材料之外,還能順便讓孩子認識邏輯、嘗試動腦,那是不是很棒呢?由我擔任審訂者的不插電 小學生基礎程式邏輯訓練繪本,就是很好的選擇之一。

還有啊,這本什麼啦!這也是資訊科學正是我的另一個大膽的嘗試。我試圖想要讓大家理解,資訊科學的世界還很廣大,除了動手寫程式之外、除了大量的3C產品之外,體驗資訊的世界、理解資訊的思維還有不同的方式。從小學的高年級開始,到國中、高中甚至是所有想要入門資訊科學的人們,它都會是值得你閱讀的好書喔!(看啊!寫了這麼多字終於如此不著痕跡的置入行銷惹~)