11/30/2020

計算機程式教學

需要助教幫忙學生上機實習的原因與方法 

一下時,我的計程補考 (blog)。當時老師的教學方式是板書上課後給作業;對初學者而言,困難的是程式的邏輯 (if/for) 和除錯 (debug),邏輯可以借由上課中的例子說明之 (blog),但是除錯肯定是需要幫忙的。國內外許多課程都有類似的設計,例如元智資管的程設、交大應數的高等微積分,連頂尖的 MIT 都有 (課程說明),更何況是一般的學生。

當我在工工系教書時,系上規定唯一一門程式課,三學分四堂課。所以我平均使用三小時上課;給學生事先印好的講義中出好題目,要求學生於每個段落練習,我則四處走動幫助同學分析除錯的問題;上課時要求學生按照分組座好,如果該組完成,我就會口頭鼓勵並大聲宣布;讓同學間有一點競爭關係外,也讓不瞭解的同學知道課後可以詢問的對象。課後給分組作業,有不少學生可以寫出 (較複雜的) 身分證字號檢查和單機排程作業 (註 1)。公告作業解答隔週後,再實施上機考;簡化並修改作業的內容,並允許同學可以攜帶任何的資料和檔案,以確保同學對重要觀念的理解和沒有抄襲作業。分組作業的優點是讓同學可以互相討論;如果教育資源不足時,也可以減輕助教的負擔。

有一次,和一位將離職的老師聊天,他說教資料結構,卻沒有給作業,問他原因,他說『我一開始也是雄心壯志,每週單獨作業,太多人抄襲;改成分組作業還是抄襲,所以就不寫作業了』。剛任教職的我也是抱持類似的想法,只要有人抄襲就全班停止寫作業。後來想想,就算抄襲,總是有人寫出第一份;就算抄襲,抄會了也是一種學習 (註 2)。我們必須給願意學習的大學生一個機會;更何況學生中三、四成有學貸,我覺得有必要給與適當的訓練和要求。我的學生中,有不少人是很努力地學習,高中學測數學 1 級分,線性代數期末考可以考 86 分;傑出的學生可以分析複雜的數學問題,例如微分方程 (第 90 頁)。

唯有透過寫作業,同學才可以學會如何分析問題、活用上課中所學的概念、將之轉成程式碼、並且無形之中培養定時念書的習慣 (註 3)。正因為我們的學生比較不主動,老師更應該要求之。依目前的校內機制,可以申請課程助教,通常是每週二小時,將修課的學生分成兩組,要求所有修課的學生參與其中的一堂課,並準備相關的資料和檔案到課;認真的同學自然會事先先練習老師指定的問題,遇到困難時,助教就可以幫助學弟妹如何除錯和寫程式 (註 4);較不積極的同學也可以問助教。

今天開會時,為了節省時間,我的發言簡化成『目前許多的計程課程沒有作業 ... 我的經驗 ...』。聽起來我是在炫耀自己的方法,難怪得不到共鳴 (註 5)。看來,如果無法改變自己容易緊張的個性,以後開會還是安靜一點。

後記:開會喝了咖啡,腦袋又想著這件事,睡不安穩,乾脆起床寫完此文章。此時,陸續收到同學半夜三、四點寄給我的作業,誰說私立大學生不念書的!(註 6 - 8)

初稿 2013/04

(註 1) 單機排程作業約 200 行程式碼。我沒有性別歧視,許多女同學 (包括一位財金系的選修生) 會寫此作業。

(註 2) 作業抄襲卻沒有弄懂,考試還是不會。分組作業的個別考試中,就可以看出是誰在負責寫作業,搭便車 (free riding) 的同學也過不了,所以沒有公平性的問題。更何況念書是為了自己。針對分組學習,(頂尖的) UC, Berkeley 數學系對微積分課程有做過大規模的實驗,有顯著的優點。

(註 3) 我的管理數學每週有作業,作業研究每章有作業。為了減輕助教的負擔和鼓勵同學寫作業,管理數學作業 20 分中,不論對錯、計算總題數佔 15 分,整學期只改 (未定的) 6 題佔 5 分。寫作業和考試有因果關係,所以只改 6 題沒有公平性的問題。

(註 4) 我的所有教學助教都是優秀的大三大四學生。無形之中也可以培養助教的口語表達能力。

(註 5) 講話真的是藝術。如果要說服別人採納你的意見,真的是要學習正確的方法。

(註 6) 不過,這不是一個好的學習方法。昨天有學生來問問題,他說讀了兩小時還是不懂,原因在於過完春假,老師上課時的印象全忘了。比較好的方式是盡快複習,某些同學總是繳交前三四天就交作業。

(註 7) 念雙語學校的兒子想改電玩的內容,2013/4/27 告訴我想學 Java。目前的他正在念課外書 Richard A. Muller, Physics and Technology for Future Presidents: An Introduction to the Essential Physics Every World Leader Needs to Know, Princeton University Press, 2010. 當他把 System.out.println 打成 System.out.printin,看到錯誤訊息時,他還是不瞭解。

(註 8) 2020/2 教媒體系初學者,2020/9 教資管系大二學生已經修過 一年必修的程式設計為了使同學具備資料夾和檔案資料分離的概念所以將資料放在檔案底下,如下所示上課的時候還特別強調這個地方同學很容易出錯沒想到還是有很多同學做不出來甚至錯了45次,例如多了空白、沒有檔案如果沒有人幫忙的話這一些同學大概就放棄了

import pandas as pd  
df = pd.read_excel("data/lec02_taetfp.xlsx") 

沒有留言:

張貼留言