學生學習編程有何困難?

當老師滿以為學生已準備好自行設計、自行編寫屬於自己的程式時,便放手給予學生自由創作的空間,但學生的表現卻往往令老師失望。

上一篇文章刊登不久,我有幸與兩所小學的STEM負責人交流。其中一所學校在編程教學上已發展多年,所以我在分享經驗的同時,亦想趁機多了解學校在這方面的發展。

這所學校的高年級已建立了完整的教學課程/內容,內容主要亦如上文所提到的,不外乎是Scratch及Micro:bit,這也是無可厚非的。老師無私地跟我分享他們的經驗,到了最後表示,當學生「真正」開始編程時,科任老師會發現學生會感到吃力。可能大家會好奇怪,何謂「真正」開始編程呢?在進行編程課堂時,老師們都會特別準備很多教材及資料。這代表了什麼?當然是老師的專業,同時我相信老師也明白到,每當學生初次接觸到對他們來說是全新的事物、全新的知識時,老師都要格外裝備自己,以「抵禦」學生突如其來、令老師們沒法估計到的問題及狀況出現。老師有此準備,相信大家也會明白和認同。當學生學習Scratch及Micro:bit的初期,老師已為設定同一的設計及「硬揼」編程碼,所以學生的學習進度及反應都會如老師所預期的。

以上的情況及經歷是必要的,沒有輸入,可來輸出?因此在這段期間,對老師來說肯定是蜜月期,但過了這蜜月期,便是惡夢的開始了。當老師滿以為學生已準備好自行設計、自行編寫屬於自己的程式時,便放手給予學生自由創作的空間,但學生的表現卻往往令老師失望。

編程內容千變萬化

為什麼會這樣呢?相信教授過編程的老師也會有同感,就是學生學習編程與學習其他學科是截然不同的。編程軟件工具在編程中只屬技能方面的其中一個能力,但編程的內容是千變萬化的,單靠使用編程軟件工具是不能完成編程的目標。我還記得當我開始學習編程時,由第一課老師提出程式的目標到坐在電腦前正式開始編寫,中間要經歷很多準備工作。如沒有事前的準備,學生在編程時,完全憑空想像,對着電腦前努力記憶老師曾教導過的指令,最後的結果、製成品會是怎樣?大家應該心裏有數了。

編程前的工作,在此不贅了。但本人認為,程式的流程是最基礎、最必要的。這些是否學生對着電腦就會學懂呢?是否學會了編程軟件就能表現出來呢?現在坊間的比賽、計劃往往掛着「創意」和「設計」這些亮麗的旗號。學生在沒有足夠知識和創意技能的基礎下,他們的構想只會變得天馬行空、不切實際。他們不能有系統地、合邏輯地表現出自己的想法,又如何去設計及編寫出有系統、合邏輯的程式,讓電腦跟從指令去運作呢?

「創意」這詞我無意在此細敍。我想與大家分享一下我對程式流程這分面的心得。其實在我們生活中,絕大部分也是按照一些規律去活動,例如我們洗澡時,不會最後才塗上皂液;又如我們吃火鍋時,我們會等待食物熟透才放入口中品嚐。生活上很多很多事情,根本有一定固定的規律及次序。我們熟習了、融入生活後,這些程序及規律,已成為生活中的一部分。但對幼稚園或小學學生,根據本人經驗,要求他們用語言或紙筆去記錄一些日常活動的程序(如擦牙),其實不太多學生能完整地、毫無缺漏地表示出來。

小學生編寫程式不容易

我曾經要求一名成績中上的小五學生,有系統地用語言描述兩位數加兩位數的步驟。他覺得實在太簡單了,因此他輕率地向班內同學分享。當然大家也猜到結果是錯漏百出,最後由我用語言及圖表為他補充。當日的家課,我要求學生根據堂中的圖表改為計算兩位數減兩位數。結果我也不用多說,大家也估到是怎樣。

為什麼會這樣?當然就是學生一直沒有相關的知識及技巧的輸入,試問學生又怎能完成相關的工作呢!小一、小二學到的運算技巧,小五的學生也不能完整地、有系統地、有邏輯地演繹出來。那麼老師要求他們編寫一個新程式,對他們來說簡直是天方夜譚。

因此,編程教學並不是只對着電腦,教教學生一些指令就會讓學生有能力去編寫自己的程式的,一些基本功夫必須盡早灌輸給學生。正如上篇文章所說,初小已經可以進行相關的課程,而且是編程最基礎的知識。大家可能會問,初小學生連鍵盤及滑鼠也未能好好掌握,又如何編程呢?其實台灣已利用「不插電程式設計」的方式,引導學生學習編程技巧。本來今期想多介紹有關「不插電程式設計」的好處及例子,但我的嚕囌基因大爆發,要再次留待下一期才詳談這題目了。

什麼是運算思維能力之二

本系列文章:

什麼是運算思維能力? 

林偉強