在家教旅途中,曾經遇到一位特別的學生。
他是我班上的同班同學,他問我能不能幫他只到”程式設計”。
後來了解到他是資源生,有一些學習障礙,需要很有耐心且使用各種方法講解,才能好好的學習。
一開始覺得大家的程度應該都差不多,就當作課後輔導,應該沒大問題。
後來才發現沒有這麼簡單,也就由教導他的過程,我重新更深入且全面的再學習了一次python。
Python自學時期的自己
在一開始學習Python時,當時中文的教育資源很少,所以我是讀原文書加上外國的互動式程式語言網站。
老實說,一開始以為只要一個月就能熟練,因為大家都說Python是很好學的程式語言。
去詢問指導教授時,他也總說寫就對了,沒有那麼多技巧。
所以學習過程其實是東學一招,西學一招,後來湊著湊著,就也能完成幾個小專案,在班上成績也算不錯。
所以別的同學在跟我討論時,我也都是用這套方法教導,他們好像也能大概有個感覺,做出個像樣的東西。
無法抽象建構的學習障礙
同學這次完課的目標在通過這學期的程式設計課程。
我們系上的程式設計課程很難,明明是通識課,卻比資工系的程式設計還要困難。
但如果多花點時間的話,再加上我在一旁指導應該沒有什麼大問題。
後來才發現我錯了,徹徹底底的錯了。
- 第一點,他完全沒有基礎
我原本是想跟著課堂的進度走,才發現完全不行
- 抽象概念難以組合與建構
在教導同學的過程中,發現一次只介紹一行指令,他能輕易地接受。
一旦要撰寫多行指令,完成一個動作時,他就完全無法理解了。
我反覆地用自己理解的方式,寫成條列式的文字再轉換成coding的形式,他聽後好似理解,但請他按照同個思路撰寫後又無法了。
圖像建構的教學方式
後來,我改用另外一種方式。
把我的思考模式,用圖表呈現,用箭頭做思考的方向指向。
之後再轉換成coding的模式實現。
文字呈現
- 將998*2*3的資料結構轉換成998*6
- 放進一個擁有3層隱藏層結構的神經網路
- 設定匯入層有6個特徵
- 設定隱藏層有2個神經元
- 設定輸出層有3個神經元
- 設定Loss Function
- 輸出答案與正確答案比較,計算修正函數
- 反向修正
- 這樣的循環1000次
圖表呈現

使用這個方法後,同學理解得更快。
而且在面對相同的題目時,他可以快速地描繪出類似的圖表,在一步步地轉寫出大概的程式碼。
後來我也將這樣的方法用在實驗室的seminar,以及更多需要口頭報告的場合,幫助大家更快速的理解程式碼與我的解題思維結構。
個別學生學習的極限
有時我會思考,是不是有某些東西,有些人就是注定學不起來。
雖然後來同學學習狀況變好了,至少在面對相同問題時,他能知道善用我教給他的模組套用與執行,甚至能包容一些微小的題意變化。最後也是成功的Pass那學期的程式設計課。
但他真正學會了嗎 ? 我不敢說。
我甚至不敢確定他能否讀懂別人寫的程式碼。
他只是用了我為這堂課過關而設計的方法,成功的過了這門課。
一旦題目是完全新型的題目,必須從零開始設計與建模,他完全沒有組織的能力。
但也許對他來說也是個好事,讓他知道也許他不宜在這個地方花費過多的心力,過了這門課就把心思與注意力放在自己更適合的賽道上。
他擁有的能力是模組套用,而不適合面對解一個全新的題目。
我相信好好地將自己真正擅長的東西多加打磨,會遠遠好過總是挑戰自己能力無所及的地方。
不用總拿著自己的短板,想去超越便人擅長的地方。
