資訊通識教育與計算思維怎麼教?/洪士灝
筆者很擔心有人把程式設計課本的每個章節拿出來,簡化一番就拿出來教了。現在的程式設計課,很多大學生都學不好;我想如果把簡化版拿去教中小學,恐怕也是問題重重。
國外在這方面進步得很快,我們不妨來參考一下Google在這個「Exploring Computational Thinking」(探索計算機思維,ECT)網頁上所提供的教學影片。影片之一:
https://youtu.be/SVVB5RQfYxk
這些教學影片都很簡短,每個影片用通俗語言來解釋一個概念,並採用大量的實際世界的範例和日常接觸到的電腦用語;幾乎不用任何術語,目的是很清楚地讓不懂資訊科技的聽眾理解概念。
舉例來說,有一段標題為「Improving the World’s Videos with Algorithms and the Internet」的影片,就解釋如何以演算法和網際網路來改進影片的品質;聽眾不需要懂什麼影像演算法,也不需要知道什麼乙太或4G網路。
https://www.youtube.com/watch?v=lTjjV9xKYhk
看完影片後,聽眾還是不會寫程式,但是應該能夠理解演算法、網路、以及資料中心在實際世界中對影片的作用,以及從作用中摸索其意義。
我個人認為,計算思維中最重要的概念之一,是能夠將計算「抽象化」與「具體化」的能力。例如與影像相關的演算法那麼多,我不需要知道各種演算法長得什麼樣子;但我知道影像壓縮演算法可以幫我省下傳輸時間,影像辨認演算法可以幫我了解影像裡面有什麼物件(以上是抽象化)。
而這些演算法早已經有聰明的專家實作出來,我們可以透過網際網路、利用資料中心的雲端服務,來使用這些演算法(這是具體化)。
至於如何「透過網際網路,利用資料中心的雲端服務來使用這些演算法」呢?
想知道的話,就去學寫程式吧!實際上,在某些系統上很可能短短幾行程式就描述了這件工作,學生只需要理解語法、用語法表達想法、將要做的工作描述出來;至於有沒有必要知道這些演算法長什麼樣,我覺得除非想當專家,否則根本不必學。
我想,會寫程式不代表一定懂計算思維,所以要教資訊通識或計算思維的教師,應該要多參考已有的教材,例如Google這裡有個讓教師瞭解計算思維的「Computational Thinking for Educators」線上課程;修課者不需要程式設計的基礎,只需要會使用瀏覽器,花費15至30個小時就可以有基本概念。
當然,這類課程也頗適合想瞭解所謂的計算思維的一般人。
反過來說,懂運算思維不見得會寫好程式,那又如何?話說寫程式也只是初步,資訊世界還很寬廣;如果懂得資訊世界的運作,心中有運算思維之後,或許有人會想閱讀程式去更加理解資訊世界、或許有人會想學習用程式設計改變周遭世界。
也或許有人會想改進資訊系統的架構,或許會想到新的應用、新的商業模式,或許會用計算思維去解決各類學術研究上的問題⋯⋯。
所以,我並不是說不要教程式設計,而是不希望過於強調程式設計,因而框限了學習內容和未來的發展性。