深呼吸,放輕鬆,程式設計上課囉/凱西
身為107課綱的高中第一屆白老鼠家長,要說我們對12年國教的新課綱是百分之百支持、百分之百有信心,都是自欺欺人的說法。
筆者曾經參與99高職課綱的「計算機概論」、以及高中「資訊科技概論」課程教材編撰作業近七年的時間,對於即將上路的107課綱「資訊科技」課程綱要,我也有話要說。
程式設計不等於資訊科技教育
最近大家討論最熱烈的,莫過於「以後中學生都必須要學程式設計」。因為這個話題搭上了美國總統歐巴馬宣布「程式設計」為中學生必須修習的科目、英國也已經把程式設計納入全國課綱,所以,為了與世界接軌,我們的小朋友,又多了一門課必須修習。
一時之間,彷彿「老虎來了」;這個議題你一言我一語,好像很重要,其實都已變了調。
這裡先來定義一下,107課綱的高中生,分為普通高中、技術高中(即現在的高職)及綜合高中學生。
我必須要說,高中生的資訊科技教育一直都在;程式設計課程也一直都在,只是在99課綱中:
課程名稱不一樣,就像筆者在前言中說的,普通高中上資訊科技概論、高職上計算機概論,但課綱內容大同小異。
程式設計也一直都在,只是份量不大一樣。高中的「資科概」是一學期二學分的課程,將資訊議題整個涵蓋在裡頭,其中也包括基礎程式設計,但如果一學期18週,二學分是一週二堂,認真說,學不到什麼程式設計。高職又分為「計概A」和「計概B」兩套課綱,計概A是一學期二學分;計概B是四學期10學分。在這裡,計概A的情況類似高中資科概;而計概B的程式設計就紮實一些,但若只上計概,學生接觸程式設計也不足一學期。
以上說的是99課綱現況,的確不是即將上路的107課綱內容;但即使如此,我們可以觀察,107課綱的資訊科技課程,也絕對不會以偏概全地認為,程式設計就是資訊教育的全部。
到底有什麼好擔心的
就像我們小時候,英語是到國中一年級才開始正式教的;在大家熱烈討論英語是不是要讓學齡更小的小學生接觸時,討論的人很自然地分兩派:一派認為要讓小朋友「自然習慣兩種語言」,才能順利與世界接軌;一派認為要先固本,再求發展,語言發展不能躁進,一切應該按部就班。
是不是似曾相識,和現在討論中學生學程式設計的分派也很像不是嗎?
從103年年底發布的十二年國民基本教育課程綱要總綱中,我們可以知道,普通高中的課程規劃中,在科技領域學習課程項下的資訊科技(見第9頁),而且和生活科技課程,總共分配到四個學分。而技術高中由綜合活動和科技兩個領域共七個科目,由各校自選二科,若學校沒有選,連資訊科技都不用上,更摸不到程式設計的邊了。
在找資料的過程中,有多份簡報檔案中重複出現這句話:「107課綱不是從零開始」。的確,那如果依照這個脈絡來看,真的是沒什麼好擔心的。
傳言打哪兒來
都說「新聞是『吵』出來」的,根據筆者觀察,中學生要學「程式設計」了,除了搭上了歐巴馬的便車,就是乘了創客(Maker)風潮的順風。一時之間,它成了不可不為之勢,甚至有人將107課綱納入程式設計教育列為自己的政績之一。這些不論順勢逆勢,只是話題,筆者暫且按下不表。
回頭來看105年2月出爐的「十二年國民基本教育課程綱要的高中科技領域草案」即107科技課程領綱。在領綱中將資訊科技課程從總綱中抽出,再拉近、拉大來看。有了!從第10頁下方開始,國民中學課程中,學習內容包括了「程式設計」。
是不是!這不是從國中,而且是七年級就要開始學程式設計了?不得了了,身為家長,我要準備攢錢買電腦;為了不要輸在起跑點,我要送小朋友去學程式設計。等等,真的等等,別看到黑影立刻開槍,這份文件還有下文呢!別忘了再往下研究完它的三個附錄,再回頭來決定要不要送小朋友電腦和新的才藝課。
在部定必修課程中,其實講究的是「扎根」,為下一個學習階段打基礎、找興趣,它的地位不似傳統的國英數社自,比較像是為未來大學選修和將來就業做基本的介紹和生涯探索。當真有興趣,有進階的加深加廣選修課程,真正的「程式設計」課,給你最多8學分,可以學得更多一些,更好一些。
程式設計學什麼
關於小朋友學程式設計,建議可以看看成功大學蘇文鈺教授的「用程式啟動孩子的未來」,這是一例,也討論了城鄉差距等家長會關心的面向,筆者就不多著墨,我說我想表達的。
科技日新月異;資訊科技的發展更是一日千里。教青少年寫程式設計,已經不像我們小時候,是一碼一碼慢慢生出來的,不只Fortran和C語言要求要視覺化;程式設計的方式已經從以前的寫程式,發展到了以拖拉模組的方式產生程式,像是麻省理工(MIT)發展的Scratch,和微軟的Kodu。
上面這兩套「程式語言」,都是免費提供語言和發表空間給使用者寫作、發表成品的,以目前筆者的觀察,除了高職為了就業做準備,會將VB程式寫作納入訓練課程,也即將教授在就業環境中常用到的C和Java語言之外,普通高中和一般學習社團,甚至是坊間的「程式設計」才藝班,用的都是這種類型的工具。
其中,微軟的Kodu是2015年的11月中才支援中文,討論的人尚不會很多,它存在的價值,就筆者的偏見,就是微軟會認為,既然美英兩國要中學生寫程式,這就是一個市場,就要有一個產品適合它,以後,我的客戶長大了,依然會是我的客戶。
它們的操作都很直覺,就是拖拉模組拼圖塊,再下參數,藉著它們就可以控制畫面上角色的動作,和舞台的變化。操作上不用太多的學習,要學的是能不能有好的演算法和資料結構。
天呀!演算法、資料結構耶,很多家長都沒學過沒聽過,怎麼可能教孩子?
結語
中學生要學的是怎麼找問題、定義問題、尋找方法和資源、解決問題,再回到定義問題。
雖然筆者是資訊科班出身,也在資訊教育場上努力多年,好像是在說風涼話,但真的要說:別怕,我的肩膀讓你靠靠,如果你沒有那麼大的壓力,孩子就沒那麼大的壓力。學程式設計不難,別被「程式設計」四個字嚇到了。
回到我們的命題,為什麼所有的中學生都要學程式設計?
筆者的結論是,中學生要學的不是「程式寫作」(寫程式碼),而是「程式設計方法」。學怎麼找問題、定義問題、尋找方法和資源、解決問題,再回到定義問題。看!這不是我們一直希望身邊的人,不論是自己的孩子還是工作伙伴,每個人都要的基本能力嗎?若是每個人都懂,那不是太棒了嗎?
不要再拿「程式設計=資料結構+演算法」這麼文謅謅的東西來嚇孩子了。為人父母的也不要拿「程式設計」來為難自己。
讓我們來定義問題:基本題:「資訊科技教育不等於程式設計課程」;進階題「程式設計課程不是程式碼寫作課。」
然後,給您個解題技巧:深呼吸,放輕鬆。