資訊科學納入大學通識課程,可能嗎?

2016.01.05 by
蘇文鈺
蘇文鈺 查看更多文章

成功大學資訊工程系教授,創辦Program the world 兒童與少年程式設計教學計劃,團隊成員透過每週陪伴教學和完整長期的輔導方案,藉由程式教育讓孩子們以自力改變自己的未來。希望透過程式教育,為孩子們打造一個希望無窮的世界。

對於美國總統歐巴馬簽署將資訊科學納入通識課程的教育法案,我的心情很是複雜。原因很多,先講憂心的地方好了。

首先,這個法案宣稱要每個孩子都可以成功,但是以過去美國的教育的走向,其實是優勢的越優勢,弱勢的越弱勢,也就是跟多年來美國社會的結構往不對稱的M型化傾斜的走向是一致的。

要知道,資訊教育所需要的資源,不管是教材,教具與師資,與過去的傳統教學科目重疊的不多,這是一個國家需要大量投入的,既然是需要大量投入資源,那麼可預見的就是,優勢家庭普遍會取得更多優勢,這是資本主義社會的特點,除非在資本主義的骨子裡添加一點變因,這麼走下去的結果會是貧富更為不均。

圖說明
圖片截自Program the world

上一節討論到的資源問題,硬體方面,不管是教材與教具,只要是有心人願意做,都不成問題。以我們自己努力進行的Program the world兒童與少年程式設計教學計劃來說,我們已經計劃每年出四到五個開放教材,並搭配三到四個教具,所有的資料與程式碼都會在明年我們的網站上下載得到。但是真正的問題卻在於師資;優良的資訊教育師資難尋。不在於我們找不到程式設計師來教,而是:

  1. 程式設計師可能不善於教學
  2. 好的程式設計師的薪資很高,我們如何吸引他們願意參與程式教學的行列呢?

再來,因為是通識課程,以我目前為止在大學裡開通識課程的經驗,多數學生因為學校規定要修通識課而修課,從第一堂就滑手機到最後一堂。

我知道,課程無法吸引學生,老師也該負責任,但是要每一個老師都能把課程上得有趣以達到每一個人都成功的難度太高了。我們到底想教學生什麼樣子的資訊科學應該有得吵的,檢討過去的通識課程到底達到什麼效果應該是很重要的一步

所謂通識課程通常無法要求深入與難度,假如我們只是希望透過通識課程吸引真正有天份的學生進入資訊領域,那麼類似Hour of code這類的課程就足夠了,實在不必大張旗鼓地弄個通識,只要授權校內有興趣的老師,用網路上可以找到的這樣子簡短的教材,自己花一點時間練習,然後對全校學生開選修課就可以,甚至外包也許都可以。若是有特別有興趣的學生,在學校鼓勵成立社團,在每一個地區應該都有鄰近大學,也許設立大學先修課程也行。只要資訊夠充分,生命會找到出路的。

但是,若是我們希望學生是真的能用資訊科技來幫他們做一點事,甚至輔助他們在不管是資訊,程式,甚至是其他學科方面的進步,那麼幾個小時的程式設計教學恐怕用處不大。要做到這個地步,課程必須有一定的強度與時數

圖說明
圖說:「Program the world兒童與少年程式設計教學計劃」以技能為導向,旨在讓偏鄉孩童能夠透過學習程式設計而增進謀生能力。照片來自:Program the world

過去 Program the world兒童與少年程式設計教學計劃在偏鄉的課程就是如此,因為我們的目標是技能,而非課外社團活動。因此,即使是課業成績在全班後段的學生,還是有可能學得不錯。我們也明白,這樣子的上課方式不可能適合所有學生,但是既然打算是訓練技能,俗話說,錢不是萬能,沒錢就萬萬不能,目標就是指向有以程式設計能力謀生的可能,這也是偏鄉的孩子最需要的,要不然就不必做了。

我們也很清楚,不能只教程式,還要教導實做的能力,所以Maker教學也在我們的課程裡面,也就是除了bits,也要atoms。我們的用意並不在學生要樣樣皆通,而是,一來,讓學生廣泛接觸資訊科技,二來,儘量讓不同天賦的學生都可以找到資訊科技對她有幫助的部分,三來,學生可以選一兩樣他最擅長的技術切入即可。

所以,我們能力與懂的範圍有限,必須結合其他專長團隊,一起加入教學。但是,這樣子範圍能跨超過一個領域的大學前教育的教學團隊,即使在全世界也並不多。即使有,也會被優勢團體先一步網羅,要做到每個人的成功,好難。

若是以Program the world的方式,夠多的課程,夠高的師生比,傾我們的全力,最多只可以照顧兩個偏鄉,而且是以村為單位,不是鄉;學生人數很難超過50人。從2014年起,我們接到超過十五個單位的訊息,要我們把課程擴展過去,我很願意一口氣都接下來,但是也知道接下來的後果,無奈的,心裡流著眼淚地,回答無能為力。

圖說明
圖說:蘇文鈺教授與學生。照片來自:Program the world

所以,雖然知道面對面教學是偏鄉孩子們最需要的,我們也只好轉為先開發免費開源且在偏鄉實際上過的課程為主要工作。希望願意到偏鄉教學的熱血朋友,不必自己開發課程。

也因為是以技能為導向,這樣子的課程都是以50個小時為一單位,份量頗重,也會先在偏鄉的孩子團體先試教過,修改再修改,確認一個班裡超過1/3學生有辦法接受才會release。所以,我們的課程不見得適合極為優秀的孩子,或者說,這樣子的課程對後者來說,也許不到20小時就可以上完,假如是這樣,我還是建議有特殊管道,讓他一路往上衝好了。這種就不在我的範疇,若是偏鄉有這樣子的孩子,直接送給葉丙成老師去教就好。

雖然說,我們以程式設計與Maker教學為主,但是我們並不希望孩子只會寫程式或做勞作。真正的資訊科學教育不在於寫程式,而在於善於利用電腦幫我們解決問題的能力。

很會寫程式,卻不會解決問題,甚至發現問題,那麼我們還是會淪為軟體代工國家,與過去的硬體代工,並無多大差異。在資訊科學教育裡,計算思維(computational thinking)才是重點所在,而進一步的是演算法思維(algorithmic thinking),最後一步是架構思維(architecture thinking)。這不是修完大學裡的計算理論、演算法或軟硬體整合設計就可以的。最後還是必須回到很基礎的理論,以及理論與應用的聯結才是。

我恐怕,跟著美國人的教育政策,學到的若只是皮毛,最後還是一樣補習班或才藝班滿天飛,孩子們多了更多東西要補,豈不悲哀?但是,衡諸過去的台灣經驗,只要列入課綱,考試要考,升學必須,利之所趨,豈有不大補特補呢?家長觀念不改,教育單位政策不能慎重,恐怕台灣的競爭力會每下愈況啊!

台灣常常以為多就是好,做得多,論文多,程式碼多,工時多,錢也要多。所以我們的工程師常常在瞎忙之下自以為做了很多很厲害的東西,殊不知,少則得,多則惑。根本沒打到要點。架構與原因沒弄清楚,沒好好執行,就像蓋房子沒照藍圖,不僅白做工,還很危險。

過去20年,我最常對大一或大二學生說的就是,他們非常幸運能念資訊系,因為當今幾乎所有的熱門或不熱門的產業都與資訊脫不了關係,食衣住行是,連學習音樂都是。假如可以把自己的興趣導入到資訊技術,會是一件幸運的事。

但是,20年來,我屢屢看到學生在沒念完大二就對資訊技術失去興趣,甚至念完大四還不會寫 C 或java的都有,原因不用我說。所以我也常對學生說,若是沒有興趣,趕快轉系,會這麼說,實屬無奈。

通識課程中的電腦科學要教什麼?若是照著過去政府的做法,一定是去找一堆學者專家來訂定教育政策,或者說是課綱。這些課綱被某些學者專家定了之後,想必會有相關人士開始出版相關教材,然後就是補習班跟進。以建構式數學為往例,想必可以讓大家都印象深刻。

我並不認為建構式數學本身有多大的錯,這是學習數學的方法之一,但卻不是唯一的方法。若是用電腦程式的觀點來看,建構式數學有非常類似之處,但是當它變成一種制式教學與評量標準時,很多事就變了調了

我是資訊系大學教授,這幾年又在從事兒童少年程式教學,被找去問的機率頗高,但是我是不敢站出來說要制定什麼樣子的課程資料與大綱,來當作這些通識課程的參考,更不用說是標準或準則了。

為什麼我說過我怕資訊科學被納入通識課程呢?原因就在此,我們太擅長把一樣東西當作教條,「廣泛」施行,從教學效率上來看,這沒什麼錯,但是這卻會違反資訊作為「科學」二字的含義。

既然是科學,就應該沒什麼答案,而沒有答案的東西要怎麼寫教科書呢?遑論是怎麼教?既然照著學習科學這件事不好教,那麼就很為難老師了。以我在大學教書20年的經驗,單單要與學生溝通以下這件事都很難了,何況在中小學階段。那就是前面說的,科學是沒有一定的答案的。

所有人應該都會同意,科學沒有定的答案這件事,但是我們的學生為什麼會一直到念了大學都還老是希望老師可以給個答案呢?我想,若是因循過去的做法,資訊科學納入通識課程,甚至有一天變成大學入學要考的科目之一,恐怕我們上的不是資訊科學,而是資訊學科了。

前文所說,資訊科學有三個重要的觀念要建立,也就是computational thinking、algorithmic thinking與architecture thinking。這些是思維,沒有針對哪一個領域,哪一個應用,或是哪一門學科。資訊的東西往往只是個工具,希望能用來解決諸多事物,本身不是主角,通常只有在資訊系裏才會把資訊技術本身的發展當作主角。前面說過,許多資訊系學生在還沒有念完大二就對資訊失去興趣,之所以願意留下來繼續念,看的不過就是畢業後工作好找,這是蠻悲哀的。當學生學一樣東西不知道要解決什麼問題,只是被要求把工具來來去去弄得很熟,還會產生興趣的學生比例是很少的。

這讓我想起自己當年學習如何解微分方程的往事。解微分方程有很多方法,在工程數學裡,老師一一教我們這些方法,我為了考試,必須每種方法都熟練,卻不知道最重要的其實是:「微分方程是用來解決什麼問題?」,的這個問題。我之所以勉力學習只不過是為了不要落在我的同班同學之後太遠,這個不知所以的理由。我想,若是大一新生就可以讓他們知道,學習資訊技術可以解決哪些有趣的問題,那麼一定可以有更大比例的學生在未來的四年大學生涯裡,不治喪失對資訊技術的興趣,甚至是可以深深地投入到新資訊科技的研發,要不然也可以解決許多現實的應用

資訊科學作為中小學的教學材料也該是如此。對於一個多年來以資訊技術解決問題的人,我相信即使是小學裡的其他科目,一定也有可以運用到資訊技術的地方,而運用資訊技術的第一步就是計算思維與演算法思維的建立。這就像是獨孤九劍的總訣式一樣。

再來,我們也該對教學的目標有一個明確的想法。舉例來說,中學有一般高中與技職高中之分,教學目標自然不同。以我在偏鄉的程式教學的走向是以後者為主,因為身在偏鄉,我知道多數學科成績較差的學生會走技職體系,我希望他們在入學後有更堅實的程式設計基礎,所以我的目標不在啟發天才,而在於一步步建立程式設計概念,並且儘早讓他們離開圖形化程式界面,進入文字模式的編寫程式,因為後者才是工作場域之所必需。俗話說,錢不是萬能,沒有錢萬萬不能。期待他們若是有一天上了大學,至少學費與生活費可以靠自己掙來。

為了確認同學的學習成果,Program the world 的晉級考試題目都只有一題,可是考試時間都至少是一天。這有別於一般考試的題目數多,每一題的解題時間卻不多。以寫程式這件事而論,本來就是要用比較長的時間來寫一隻程式,以昨天我們的AppInventor考試題目,每一題都要使用超過5000的程式碼積木才可以做完,判斷是否過關的標準也模擬一般專案開發的檢查過程,目的就在讓學生知道程式設計的世界到底是什麼樣子。

Program the world兒童與少年程式設計教學計劃的課程也會安排讓學生有快速升級的機會,這類學生在偏鄉的比例雖然不高,但是我們就會以專案(Project Based Learning)學習的方式來試著帶領他們。若是她們可以因此更上層樓,而且我們的升學制度真正邁向多元,我想自會有其他大學教授(我在成大資訊系的同儕就有)對他們有興趣而願意接手繼續帶領他們。

這些都不是目前體制內的制式教學可以辦到的。對於多數學科,我覺得也許制式教學不失是一個方法。但是以資訊科學來說,卻難以用這樣的教學法來達到教學效果。事實上,在一般大學資訊系裡,也還未能完全融合當今資訊科學教學的所需,這是我們要努力改變的。

我想在上位者需要先想好的是,我們的資訊科學教育的目標為何?而且沒有一種方式會適合所有學生,正如過去我們有技職與一般的分法,之後也許該更進一步分流。雖說有教無類的目標過於遠大,也許難以達成,但是我們總該想個方法,努力往Every student succeeds這個方向邁進。只要政策對了,連補習教育也不會是只為升學而存在,當然,正規教育就更不會只是為了升學。

教育的目標當然是提升學生的競爭力,這個競爭力不是跟身邊的人競爭,而是跟全世界的人才競爭才對。假如我們的教育把過去的硬體代工只是導向軟體代工,那麼我們就還未看到真正的困境,假如我們的學生因之而提起對一切問題產生疑問,進而對一切問題產生解法,台灣才算真正看到隧道口的光。

我這人也許有點小聰明,但是卻無大智慧,所以,也只能做我自己想得到的,自以為對的事。面對多年來台灣教育,產出這麼多對求學沒興趣的孩子,很是憂心。只願,我們的資訊教育,不要再重蹈覆徹,再次讓孩子對這門重要的學問失去興趣。

本文原文整理自蘇文鈺教授臉書

每日精選科技圈重要消息