一下時,我的計程補考 (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 教資管系大二學生,已經修過 一年必修的程式設計。為了使同學具備資料夾和檔案資料分離的概念,所以將資料放在檔案底下,如下所示。上課的時候,還特別強調這個地方,同學很容易出錯。沒想到還是有很多同學做不出來,甚至錯了4、5次,例如多了空白、沒有檔案。如果沒有人幫忙的話,這一些同學大概就放棄了。
import pandas as pd
df = pd.read_excel("data/lec02_taetfp.xlsx")
沒有留言:
張貼留言