Online Course不能承受之輕

 Gordon Lau 劉偉中

Gordon Lau 劉偉中

2019-01-20

Online course已成為學習的新潮流,尤其是學習科技類知識,大多數人都是上網於大規模開放線上課堂(Massive Open Online Courses) 選擇希望學習的課程。現時較熱門的平台有CourseraUdemyEdx等。 完全免費的例子例如MIT Open courseware亦是大行其道。 網上課程的普及,令不少人發出感嘆:「讀大學所為何?讀網上課程就好了。」然而,以網上課程學習,與真人教授課堂相比,有一道難以逾越的 圍牆:網上課程難以協助學習者建立編程所需的心智模型(Mental Model)。

何謂心智模型?

維基百科的心智模型(Mental Model)條目給出以下的定義:

A mental model is an explanation of someone's thought process about how something works in the real world. It is a representation of the surrounding world, the relationships between its various parts and a person's intuitive perception about his or her own acts and their consequences.

以中文解釋,就是人腦中的一個理解現實事物運作的內在認知型式,心智模型乍聽之下好像很抽象,但其實每個人都有自己的心智模型。想像一下,一天你走到街上,地上濕濕的,你的即時直覺反 應大概會是如下:

  1. 如果是整條街道都是濕濕的,應該是剛下了雨,因此地面濕滑。
  2. 如果只是街道的一部份濕了,大概是正在洗地。

wet-street.jpg

Source: https://www.shutterstock.com/search/wet+street

為何會有如此反應?而非其他可能性?原因在於我們對世界的現象有一個既定的理解:水決不會平白出現在街道上,一是天下雨了,一是有人在地人倒水。這個既定理解就是我們腦海中的 心智模型。人類直覺會利用現有的心智模型去理解世界及決策(Decision),而建立心智模型的型式,就是基於個人過往的經驗(information feedback),這也就是何謂「經一事,長一 智」。

mental_model.png

Source: Wikipedia

編程心智模型

編程心智模型(Programming mental model)原理上與上面提過的天下雨類似,不過內容上卻複雜得多,軟件的本質,其實是資訊處理,也就是輸入-處理-輸出模型 (input-process-output model). 

input-process-output.jpg

Source: Wikipedia

輸入及輸出的模型相對簡單,主要是描術輸入及輸出的型式(Format)。而最複雜的當然就是處理模型,編程要處理的,就是如何將輸入的數據,以一個既定的規則,生成輸出的數據。 以下是一些編程心智模型中一些規則的例子:

  1. 如果變數(variable)沒有經過變化,變數的數值不會改變。
  2. 沒有終止條件(Termination condition)的廻圈(loop),會進入無限廻圈(Infinite Loop)。
  3. 對電腦而言,所以字符及數據都以二進位表達(binary representation)
  4. 編譯式語言(Compiled Language)及直譯式語言(Interpreted Language)的具體運作模式
  5. 述句(Statement)與表達式(Expression)的具體分別

以上種種,都是組成編程心智模型的部份,沒有這些概念,根本上不能編程。

大規模開放線上課堂(MOOC)

大規模開放線上課堂,擅長以重覆的編程練習,為學員提供大量的複習機會,令學員非常熟習解決問題的方法,以達至專業技術的水平。如果用一幅圖去代表,可以用心智模型理論中的 單廻圈學習(Single-loop Learning)去代表。

single_loop_learning.png

Source: Wikipedia

藉由大量的練習,為學員提供大量的資訊回饋(information feedback),使學員非常熟練。但可以留意到的是,下面的心智模型(Mental Model)亦沒有得到適當的回饋去得以改善。 此話何解?網上課程不是有許多的影片以提供概念上的解說嗎?確實有不少,但由於網上課程的形式所限,缺乏導師學生之互動,令至導師難以瞭解學生是否在學習後建立了錯誤的心智模型。 以下是一些筆者根據教學經驗所發現的一些謬誤,而這些謬誤都是由於一開始心智模型的錯誤所做成。

  1. 有一些程式只能夠由Python編寫,其他程式語言不能勝任
  2. 寫手機程式無需學習伺服器端編程
  3. 學習數據科學無需編程根底
  4. 電腦程式充滿不確定性(Unpredictability),即使甚麼都沒更動都會突然出現問題。

正由於MOOC難以協助學生改善心智模型,因此在網上課程學習成功的學生大多數原本有工程或科學根底。有理工科根底的人,由於早在多年的學習建立了與編程所需類近的心智模型,例如 科學精神(Scientific thinking)及假設驗證(Hypothesis Validation)等方法,因此即使網上學習欠缺相對應的訓練,仍能由過去多年所形成的思維習慣去推導出合理的結果。 反之,本身沒有理工科背景的人,由於欠缺所需的心智模型,於MOOC學習編程時常出現知其然而不知其所以然的狀況。

真人教授的課程

真人教授的課程,由於人力所限,不能像MOOC一樣同時為數以萬計的人提供教育,但導師與學生間的互動卻可以大大增加。因此真人教授的學習模式,可以用心智模型理論中的雙廻圈學習 (Double-loop Learning)去代表。

double_loop_learning.png

Source: Wikipedia

同樣是藉由大量的練習,導師可以根據學員的個別情況,協助學員建立正確的理解。簡單舉一例,導師可以要求學員從頭到尾解釋一次程式碼的運作方式,或者為何要以某種方式實現等 等有即時反饋的教學模式。一個成功的真人教授課程,應該於一定程度上重塑學員對事物的理解(也就是大家常講的「有嘢拎得走」、「有嘢學到」)。如果經過多星期的學習,還是沒有 令學員有新感悟、新想法的話,筆者認為這是一個失敗的課堂,還不如回去看Youtube比較好。

由筆者的教學經驗,以下有一些常見例子:

  1. 在維護及開發過較複雜的軟件後,才體會到靜態型別語言(Static Typing)如Typescript的好處
  2. 在寫過不少測試(Test case)後,理解到測試確實幫助減少編程上的錯誤。

除此以外,學習編程的道路上,總有一些困難異常的攔路虎,使人感氣餒,萌生放棄念頭,學習網上課程時亦往往因此類問題而半途而廢。真人教授之課程,由於有導師及其他同學之互動, 即使困難亦容易抵受壓力繼續學習。

總結

由以上分析可見,MOOC網上課程適合本身有專業知識,想去進修學習的學員,例如本身是程式設計師,希望學習數據科學、人工智能等情況。真人教授課程適合沒有相關背景,想進入資訊科技一行 的學員,箇中原因正是由於建立心智模型之分別。

留言

延伸閱讀

如何成為 Programmer (三):學習資源

如何成為 Programmer (四):適合新手的語言

如何成為 Programmer (二):其實入行不難

如何成為 Programmer (一):業界景況

Data Science? AI ? Machine Learning? 到底有何分別?