電腦效能應用與安全研究室 Performance, Applications and Security Lab


我們的研究範圍很廣,從嵌入式系統、手機應用、一直到雲端計算、商務應用、資訊安全都有做。
我們的合作研究夥伴很多,包括聯發科、IBM、中研院、資策會,還有和台大、清大、交大的教授合組研發團隊
,包括高階應用處理器架構研究、虛擬化技術、異質計算、系統軟體等重要技術的研究與創新,我們很關切台灣人才與產業的未來。

2015年10月14日 星期三

關於資訊教育課綱

剛剛透過朋友們的分享,看到今年八月提出的「十二年國民基本教育科技領域課程綱要草案」(https://goo.gl/G53sR9),看了之後,可以理解為什麼幾位正在教青少年程式設計的朋友對這個草案很不滿意。

「過猶不及」是朋友們主要的批評。原本在中學中幾乎沒有什麼科技和資訊教育,一下子就要端出大餐出來餵飽學生,會不會揠苗助長?教得不好,會不會反而讓學生失去興趣?

我約略在兩年前(2013年11月)受託看過草案(https://goo.gl/Z9fdVm),給過一點意見,那時我特別強調說中小學的資訊教育的重點在於computational thinking和project-based learning,提升學生運用科技、邏輯思維、與問題解決等能力,絕對不是要提早教大學資訊系的東西。

我還花了一些力氣與其他領域的學者溝通,說中小學的資訊教育有其必要性,學生從小建立起運用科技、邏輯思維、與問題解決等能力,對於他們以後要鑽研任何學術都如虎添翼(我講的其實就是CS+X的觀念),所以絕對不是要跟他們搶學生。

雖然我承諾會幫忙,但2013年之後並沒被找去參與這個課綱的討論,所以之後發生了什麼事就不得而知了。

2013年的版本,希望在小學時就引入視覺化coding的概念,基本上類似MIT所提出的Scratch;而國中必修課的內容則強調基礎概念和動手作,草案提到:「了解程式語言基本概念,應用簡單的抽象化概念撰寫程式以解決簡單問題。」「應用視覺化程式設計軟體,呈現人機互動和應用,以解決生活或學習問題。」(當時我心理想的是採用HTML5);到了高中的必修課,才開始教進階的概念,應用資料結構與演算法、以及模組化與系統化設計的概念設計程式(Java或Python都可以,反正重要的是概念)。

然而今天看到的這個2015年的課綱草案,在內容上已經與2013年版的差異甚多,在精神上也有頗大的差別。

在精神上,2015版把資訊教育延後到國中(七年級)才教,但是大幅增加國中的教學內容:國中三年每年都有一堂必修的「資訊科技」,每週兩小時,總共6學分。到了高中,還有一堂2學分的必修課,以及4學分的選修課。必修課的份量頗重的,所以我們必須回過頭檢視是否有「過猶不及」的問題。

在內容上,或許是後來擬訂草案的時候,希望較為具體敘述該教授的內容,然而草案中用了一大堆大學的計算機概論、程式設計、資料結構、演算法等課程中的專有名詞,讓人覺得包山包海,國中三學期有辦法教完嗎?2015年的版本的國中必修課內容列表在第18~20頁,其中的第19頁還列舉了演算法和結構化程式設計這些比較沈重的東西。

教青少年寫程式,並不是一件簡單的事情。這並不像是普通的課程,老師在上面講講就算了,一開始必須投入相當大的人力從旁輔導初學者,而且對於那些對電腦不感興趣的人,在課程設計上最好是循循善誘。同時,因為大多數電腦程式語言是英文的,可能還要考慮學生的英文能力,不然就得採用全中文的介面。我想,如果要達成2015草案的構想,教材、師資、學生的學習能力都會是很大的挑戰。

還好,這還是個草案,我覺得設計課綱的學者,或許可以說說他們對於教材和師資的規劃,以及在某些學校試辦教學,用實驗結果告訴我們這樣的安排是否可行。不然,我們強迫中學生修這些必修課,就如同自已以前被逼著背化學元素表和化學式,到現在通通忘光光,有很大的意義嗎?

我個人還是認為,computational thinking是中小學資訊教育中最重要的元素,透過寫程式練習動手做、驗證所學,學習與電腦打交道,也是重要的元素,但是程式設計的技巧,書本中巧妙的演算法和資料結構,並不是絕對必要的,除非是學生在解決實際問題時會用到,這就是為什麼要project-based learning:讓學生在解決問題的時候主動去學這些,而不是一直跟學生說,先學下來,以後會有用的。現在可以學的東西太多了,隨手可得的知識也多,不需要把知識硬塞到學生腦袋裡。

我自己雖然進高中之前就開始無師自通,自學程式設計,但是我覺得把那些大學教科書中樣板的資料結構和演算法拿到國中來教,對於那些不感興趣、日後不做程式設計的學生沒有什麼意義,應該讓他們知道什麼是資料結構和演算法就行了,不必教一堆我們預見學生會為了考試而死背的東西。例如教各種不同的sorting演算法的原意是好的,但死背它就沒有意義了,所以不要貪多嚼不爛。

我覺得最好是教學生如何用coding去解決生活中或是其他學科所遇到的問題,以範例來導引,再請學生舉一反三。至於幕後的道理、效能優化的技巧,淺嘗即止就好,讓學生自己去探索,或是由選修課來補充。

至於資訊科技的教師,則必須有妥適的規劃。我想,很多學校並沒有資訊教師,一時也無法培養出足夠的教師,但我想國內有不少有經驗的程式設計師、甚至資訊系的研究生、大學生,在接受特訓之後,可到學校擔任講師和助教,暫時來解決師資不足的問題。

喔,話說如果未來的中小學生都懂得computational thinking,那麼生得太早沒機會學電腦的人怎麼辦?其實,這些課程如果中學生都學得會的話,那麼不懂的人不妨少看點電視,花點時間學學,應該不會太難吧?

後記:

剛剛有課綱委員跟我說,他們最近又翻修過一次,這週五會有新版本。他們也是希望不要教太深,例如演算法應該可以教得很有趣,只不過課綱沒辦法放太多字,只能有標題(不知道這個規定的道理何在?)所以不容易在課綱中解釋清楚。

我說,還是希望課綱中多加點說明,避免教科書的作者誤會,最重要的還是這些科目的評鑑(考試)的方式,也應該要好好思考一下,連帶做出說明,不然也有可能在執行時發生問題。

另外,我同意這些內容,如果有充裕時間、理想的師資和助教、完善的設備,課程應該可以教得很有趣,例如我們帶學生去北一女教過,知道課程的設計必須要夠有趣,而且師生比不能太高,否則學生很容易就卡關、迷失,然後因為立即的挫折感而失去興趣。

各位有任何意見或建議,也可以在底下留言,課綱委員看得到的 :)

沒有留言:

張貼留言