以學習者為主體的程式語言教學策略

Pecu Tsai
Aug 8, 2023

--

作者:臺師大科技系 PecuLab 蔡芸琤 (Pecu)

程式語言教學策略目前是百花齊放的狀態,但通常都脫離不了給予固定題目進行固定答案解題的訓練模式。

這樣的教學策略會遇到的問題就是,學生往往對這些跟自己切身無關的題目沒有熱情,更無法真心體會為何需要學習及使用程式語言的樂趣。

有鑑於此,本人設計出一套教學策略,並嘗試執行在每個參與課程的學生身上,讓每一位學生,從課堂的第一節開始至課程結束,是從自己發想的主題開始逐步收斂至可實作出成果的歷程。

課程中的學生背景是12位現役的國高中教師,包含科別有,國文老師、輔導老師、特教老師、理化老師、音樂老師、體育老師,以及一位已退休的物理老師。這些老師在進行課程之前,對程式語言是一竅不通,並沒有寫程式的經驗。要如何在課程結束後,都能帶回一套自己滿意且真的能解決自身問題的實作小品,就是本教學策略最大的挑戰與目標。

本次執行的課程總計連續七個工作天,中間跨過兩次的六日假期,每天八小時的密集班。

我所設計的方式如下:

  1. 講述課程執行方式,會為課堂上的每一位同學進行量身訂做,讓每一位同學自行提出教學現場或是行政流程上的需要,來描述一個能為自己解決的實際問題情境。https://youtube.com/playlist?list=PLH3VeiMX0ckgOeG3PEgukjwiUarCNIWa1
  2. 第一天課結束後,學生都還沒開始嘗試寫程式時,所提出的情境五花八門,授課老師要能夠在這些情境中找出共通點,歸納出要提供給學生相對應的解決之道。https://youtu.be/X8OvszCSL7A
  3. 第二天至第四天,設計了三份共通性的範例程式,帶著學生一步步解構這三份程式碼與各位學生所提出的情境有何相通之處,並找出哪些部分是學生需要自行添加與修正之處。
  4. 第四天結束前,鼓勵學生們透過前三天的各學生間 colab 共享觀摩,找到與自己想做的專題能整合的同學進行專題分組。
  5. 第五天至第七天上半段,就是全力衝刺與執行專題階段,老師與助教在各組間巡迴,手把手協助 live debug,讓學生看到程式如何從人的口述語言,自然轉化成可控制電腦執行的語法。

歸納出的相關語法如下:

授課教師要有能力在不同學生所提出的各種情境中,找到共通性的程式語言解決方案,做為課程開始的第一步。

資料提取與資料分析,透過 colab 與 google sheet 整合,可以讓學生先建立出足以代表各自情境的模擬小資料集,來讓學生先透過自己所提出的模擬資料,具體化各自所提出的問題。

接著帶入 pandas 套件的資料分析技巧與應用,plotly, matplotlib 套件的視覺化呈現,folium 套件的地圖分布與熱點圖,email 信件通知。

相關的三次重要範例程式:

三日範例程式

第一天 https://colab.research.google.com/drive/1zdsqKEkjXxgR5WlCfAzoQz8HCUOOPHkU?usp=sharing

第二天 https://colab.research.google.com/drive/19omkfUGwMDYaoG9wCZRJntZ8USTWaPsI?usp=sharing#scrollTo=KgwDcZfrTpDC

第三天 https://colab.research.google.com/drive/1BHdujcLwgG1vDAdT7wJQKVmRYwv7It7a?usp=sharing

學生透過這三個共通的範例程式,替換成自己所設計出的模擬資料,嘗試練習修正相對應的語法,從直接實作中來建立對程式語言的熟悉及理解。

授課老師與一位課程助教,分別在學生需要 debug 時,能像心理諮商師般的協助學生釐清自己目前面對的問題,並引導學生能一步步拆解出可執行的程式步驟,為學生搭建起各種需求所需要的程式與法。

課程結束後學生的回饋如下:

統整出本人的教學策略與眾不同之處:

1. 破壞與創新的經驗:這樣的教學過程中可能遇到的挑戰,但這些困難啟發我不斷反思和調整教學方法,以達到更好的效果。鼓勵自己和學生共同探索新的教學方法,以實現更好的學習成果。

2. 無序和不確定中的學習經驗:培養學生從混沌中找到答案的能力。鼓勵他們在面對未知時不放棄,而是學會思考、實踐並自主解決問題。這樣的學習經驗能夠養成學生主動學習的能力,使他們能夠自信地面對不確定性。

3. 成就感的時刻:每一個小的學習成功都是學生和我個人的成就。珍惜這些成功時刻,並以此鼓勵學生繼續努力。這樣的正向回饋可以激發學生的學習動力,幫助他們在學習過程中保持積極的態度。

4. 冰山下的學習體驗:我強調學生在失敗中的學習價值。鼓勵他們勇敢嘗試並從失敗中吸取經驗教訓。這種冒險精神可以幫助他們培養解決問題、批判思考和自我紀律等能力。

5. 學習方式的不同:我拋棄了傳統的固定範例答案方式,而是提倡思考、討論和探索。相信這樣的方式可以激發學生的創造力,從不同的角度理解和應用知識。這樣的教學方式能夠培養學生的自主學習和解決問題的能力。

6. 尋找自我定位及學習方式:教導學生使用 ChatGPT & Google 查找相關資訊,鼓勵他們更加主動地學習。學習是一個不斷發展的過程,因此我持續提升自己的教學技巧,以更好地幫助學生。

這些過程,授課教師與課程助教須具備 Live Coding and Live Debugging 的實力,要能示範出,想到就能做到的執行力。

Talk is cheap. Show me the code.

一起來會回顧學生們產出的專題成果吧!

https://youtu.be/Ma-ci5IcLbE

--

--