電腦與我 (5)

升上大二之後,系上的必修課少了,當然選修課也就多了起來,我記得我整個大二上下兩個學期就修了十四門專業科目。「交作業大學」的稱號馬上就讓我體驗到了......不過大二是我唯一有參加程式設計比賽並且得名的一次,不過也算是多虧了兩位強者學長的庇佑才有一張可以拿出來的獎狀。(大甲第三)

以下介紹一下修過而且比較有印象的課....

首先是「線性代數」,雖然資訊系教的線代應該是比起其它科系是最簡單的,但是授課的老師每個星期就出了六七十題的手寫作業,這樣的量就算是用抄的都會抄到飆淚,不過這樣的好處就是到了考試時幾乎不太需要準備,而且一直到後來準備研究所考試都還覺得線代很罩!以作業逼出效果還是有用的。

「資料結構」....真是一段沒什麼印象的課,因為該授課老師在系上的風評不佳,所以幾乎都沒去上過什麼課,只記得老師很愛 demo ,雖然寫作業是很麻煩的事(尤其是寫程式作業),但卻也讓我紮紮實實地去 implement 課本上的 data structure,功力的提昇還是看得見的。只是老師很機,最後班上分數的分佈相當詭異,班上第一名的九十幾分,然後第二名就 79 分了,在下拿了 78 分,如果看排名好像不錯,但分數相當....Orz

「數位系統實驗」,也就是一般科系的邏設實驗,但我們只是很輕鬆地用 Xilinx 這套軟體拉拉 gate 的 layout,因為有軟體輔助,所以實驗課過得還蠻輕鬆的,整學期應該只摸過兩次 bread board 吧!而期末專題只是很廢地作一個猜數字(幾A幾B)的電路而已。

「計算機網路」,老師第一堂課就放話要大家 trace Linux 的 kernel,而且還有一句名言:「如果一個資訊系的學生,連安裝 Linux 的能力都沒有的話,那我建議你退選這門課!」但是後來他說了期中期末考是 Open Book 後,我從第二堂課起就沒去上過課了吧 XD,不過後來成績還不錯啦~只是我完全沒學到什麼網路很深入的東西,很多東西只是大概了解名詞的意義而已吧。

「函數式程式語言」,自從我在大一修過 PL 之後,覺得 functional language 真是挺有趣的,因為所有寫程式的思維都是 recursion,這門課算是我在交大資科系中最有收穫的一門課,因為我們寫了一學期的程式,同時也上了一學期的 lambda calculus,真可謂是「理論」與「實務」並行啊!而且在學期中講到一個程式的解法,老師說:「這個公認的解法流傳了十幾年,可是後來被一個人發現了 bug 並且修正了它,那個人就是我!」一時間我好崇拜那位老師的自信(而且他是愛家的好男人喔!)。期末考他讓我們拿回家寫,然後再把答案 email 回去給他,所以他在最後一堂課時叫全班(只有八個人)起立,然後跟著他唸一遍:「for honor!」

「演算法」也是 Functional Language 的老師上的,雖然上課就是不斷地抄板書,不過我卻是沒有缺席任何一堂課(筆記最完整的一門課 XD)。在修課之前,演算法在我心中的感覺就是「強記」一些「典型的作法」,不過在老師細心教導之下(還有考超難的期中期末考驗之下...orz),我也知道該怎麼用數學方法來分析演算法(而不是只會看 loop :p),也知道該怎麼用「想法」去推導出新的解法。而這門課也讓我第一次真正了解到 NP 家族的奧義,因為跟「正規語言(自動機)」一起修習,所以更加地相輔相成(這就是「雙管齊下效果好」?)。

「資料庫管理系統」及「檔案處理」兩門課是同一個老師上的,不過上課內容講了蠻多 search structure 的東西,所以作業就寫了很多 hash, XXX tree 等等。不過因為有些作業內容要畫出樹的形狀,所以我就趁機學了 Java ,除了一些 collection class (在 OO 的領域應該要稱作 container)好用之外,要作一些簡單的 2D drawing 也還蠻簡單的,這兩門課大概是我整個大學寫過最多 Java program 的日子吧!

整個大二對我來說是「海棉時期」,也就是拼命不斷地吸收專業知識,而且作業也是最恐怖的階段(所以才逼出了我有名的創作...Orz),不過我也感受到修太多課其實是很難透過氣的,幾乎每天晚上都在寫明天要交的作業(也就是說根本沒辦法「提前作」)。不過能在那樣的日子生存下來,大概也讓我強壯了不少吧!!