新生活

Engagement at W Hotel, Taipei
Engagement at W Hotel, Taipei

去年八月,我隻身來到美國,開始屬於我的新生活。

全額獎學金的入學通知,本來該是讓人極為開心的事,畢竟出國唸書的想法,自大學時期便深植於我心中,就在差不多認識妳的那時候。

但我還記得收到通知當晚,告訴妳這個消息時,我們是如此平靜。

妳擠出微笑恭賀,我故作驚喜回應,骨子裡我們都知道,此時此刻,一個人的理想是兩個人的負擔。


剛來美國的這四個月,肯定是我生命中最難忘的一段時光,不是這裡的藍天白雲或是學術氣息,而是發生在妳我之間的一切事情。

離台前一晚還在幫妳整理行李;清晨才搭繞路計程車趕回家裡;來美國後對彼此生活加油打氣;爸爸危及時妳在旁邊不棄不離。

然後,我再次飛越太平洋,下跪單膝,這次妳說我願意。


寫下文字的今晚,妳正在太平洋上空,是否一樣平靜?

明天將要開始,屬於我們的新生活。

寫給在前線的你

從臉書看到立法院被佔領那刻,第一時間便寫簡訊問你在哪裡。果然,兩天後你告訴我剛從立法院回來。因此,接下來幾天網路上洋洋灑灑十幾篇服貿文章,有正有反,我相信你一定沒看幾篇就去了。

你知道自己為什麼而去嗎?

在你認為我將責備你之前,先讓我說個故事。小時候我參加辯論比賽,受過一種訓練:一個命題,你必須贊成,並找到充分的理由支持,說服反對的一方;然而,下一輪你必須反對,用一樣堅決的態度。

那時候我便學到了一件事,比賽的結果並不是由你的立場決定的,而是站在那個立場下,你說了什麼話,做了什麼事。

回到這件事情上來,服貿協定是更複雜的問題,它從談判、簽訂、傳遞、實施各個環節都可以成為一個辯論的命題,牽涉程序原則、經濟利益、國家安全等層面,總會有正反兩方的意見,你必須要有這個體認。

今天你選擇在第一時間走上前線,參與這場體制外的抗爭,我們不談群眾的理念,或是這場運動的正確與否,我們談談你站在那個立場下,做了什麼事。

你是否清楚整體運動的訴求?而你在那高亢的情緒下是否做出與訴求無關的事?參與之後,你是否更加了解服貿議題,並更堅定自己的立場?最後,無論未來如何,你是否認清最終與你同舟共濟的,有一大半將會是現在反對你的人?

我再問一次,你知道自己為什麼而去?

如果這些正是你也在努力的,那我將支持,並為你感到驕傲。

這是哥僅能做的,寫給在前線的你。

一堂關於 Git 的助教課

UNC Students at COMP401 recitation
UNC Students at COMP401 recitation

星期五要上兩節助教課 (recitation),今天的主題是 Git,一個版本控制軟體。

我擔任「編程基石」的助教,內容涵蓋相當廣,從一開始簡單的迴圈測試到期末要寫多線程的視窗程式。該課程提供學生充分的學習時間,我從到北卡的第二個禮拜開始,每週都得幫這些修課學生上助教課。上學期的助教課是四位研究生助教一起出席,由美國助教講課。我總是站離講台遠遠的,在同學練習時間舉手發問時,我才過去幫忙。基本上,沒對著一大群學生說過話。

這學期該課程只聘了兩位研究生助教,由於修課人數眾多,居然開了四個時段的助教課。而另一個美國助教因為早上課程衝堂,無法兼顧所有時段,只好由我這個「國際學生」上台教兩個時段。

故事回到課堂上。五十分鐘的課程,規劃如下,打開筆電接上螢幕,花二十分鐘帶學生走一遍 Try Git,五分鐘用 polleverywhere 完成點名,剩下時間讓他們練習進階的 Git Branching 並申請 Github,內容並不難。

但我講得實在超爛。

第一節接近尾聲的時候,我頭腦發熱,愈是努力想要記起講課內容,就愈說不出話來。在台上結巴正常,情況嚴重時甚至會發呆。學生開始躁動,或是直接開始討論今天晚上要交的程式作業,在台上的我簡直就像北卡的浮雲一般,看不見。

內容講得好不好是一回事,不過我講的英文,在場可能沒有人聽得懂,包括我自己。當然,我也想好好地練習在大眾面前說話的能力,但第一節課聽眾的反應讓我放棄了這個念頭。

第二節我就放空了,為了避免自己發呆,就只用最簡單的句子,大聲地講,就算是用了重複的句子,我也不害燥地大聲講。當時我心裡只有一個念頭,講完收工後就放春假了。

然而我發現一點,腦袋空空反而英文更通(也有可能是第一節已經練習過)。第二節課學生明顯專注許多,甚至過於安靜了,讓我注意到坐第二排的學生在和大學部助教討論作業。

「David,能不能請你們等下再討論,我要上課」

真的覺得被干擾到了,趕下班的我突然制止了他們。在這之後就再也沒有狀況,點完名後我也很乾脆地放人,並祝學生春假愉快。

一些學生離開了,有一些留下來練習,此時有一位較年長的學生走到講台前和我說:

「這是我在這邊上過最有用的一門課,謝謝你!」

我懷疑我是不是聽錯了,不過他後面又講了一段故事。

他原本是一位系統工程師,在公司用 Git 管理資料一段時間,但卻不知道可以把東西丟到 Github 上面,所以他很困擾怎麼用這個工具管理他需要的其他專案,今天這個這個教學正是他需要的知識,他很感謝。

我還是覺得我聽錯了,系統工程師不知道把東西備份到遠端伺服器上,這一點都不科學。

但我一點都不在意,他的鼓勵正是我需要的動力,我很感謝。

簡單的期中考

Recitation for midterm of COMP401
Recitation for midterm of COMP401

春假前夕,正是大學部痛苦的時候,罪魁禍首就是期中考。

連續兩學期當同一門課的助教,兩位開課老師出題風格雖然不同,但考試目的卻相當一致,且和我在台灣的經驗差異頗大,寫來分享一下。當然,我的見聞僅限於我所處的學校,不見得代表所有美國的大學,就讓我懶惰一下,姑且用「美國」記敘。

大體來說,美國的考試以點出學習盲點為主,台灣的考試以區分學生水平居多。

這邊的考題其實挺有建設性的,每個題目都會寫明是要測試學生的什麼能力,比方說「閱讀程式碼」、「撰寫程式碼」、「了解語言規範」等。

但就是…簡單了一點。

舉「閱讀程式碼」來說,前一次期中考,有一題是這樣的:兩個迴圈內有一個條件判斷,把一個變數加加減減的,最後問出了迴圈後該變數是多少?

考試前,我和老師開玩笑問這題目會不會太直白了?

老師苦笑回答:「是啊,不過等你看過學生答案就知道了!」

結果令人驚訝,改的考卷裡面對的人不到四分之一。

這個題目就是畫一個表格,把裡面的數字填對的就好了。我在實驗課的時候告訴學生說,一般人遇到這個題目就是照著程式的運行的順序依次填表,只要細心點,就不會答錯。以下這個表格為例,就是一列一列的把 i, j, sum 算出來,最後那格的 sum 就是我們要的答案。

b35b1-screenshot2014-03-0522-23-22

但換個角度想,也可以這樣做,先把所有的 i 寫下來,其次再寫 j,因為他們都有估定的規律,比較不會填錯。當所有的 i, j 都齊了後,整群數字用「看」的(比方說 1, 2, 3 自然就想到 6),就可以把最後那個的 sum 算出來。

d70cd-screenshot2014-03-0522-23-34

講解完這題,嘈雜的學生們靜默了幾秒後,現場居然有人拍手了。

旁邊一位大學部助教說:「我從來沒想過這種解法,看到這題我是用第一種方法解的。」這位大學部的助教今年要去 Google 實習。其實在座這些矇矇懂懂的學生們,過了不久也會熟稔這些題目,也許不是用這樣的方法解,但遲早會具備「閱讀程式碼」的本領。對於認真的學生來說,一次考試結束,能知道自己哪個部分沒有學好。隨著課程進行,作業會更難,學生會花更多時間練習「實作」,參與助教課,把著你問問題,然後在期末的時候,做出令你驚訝的專題。

想起以前在台灣接受的教育,題目多半都不直接,喜歡藏陷阱。學生不花點時間在練習「做題」上面,很難在測驗中拿到相對高分。在學校脫引而出的方法,多半就是考試,鮮少有其他管道讓具備學習能力且認真的學生出線。

夜深有感,過去接受的教育,除了遇到題目反射答案的能力,還有什麼是留在身上的呢?