大三上修課心得

前言

這是一個不公平的課程啊 欸笑死人欸
他說要考試作業我有缺嗎 我一份都沒有缺欸
欸你們分數是怎麼評的啊
欸不是 我一份都沒有缺交然後當我喔
有沒有邏輯啊 不是啊
我考試作業都有平均分 這樣算我被當喔
交作業 我一份都沒有缺ㄟ
啊這樣算我被當喔 你們分數怎麼評的啦
好啦 我要放假了啦
3 學分給你啦 乞丐

開玩笑,我沒有被當,但吃了兩個 C+ (而且都是必修,我到底在幹嘛)。

隨便啦,以下是這學期的修課清單:

課程名稱授課教師學分等第
桌球初級王傑賢1A-
職場英文寫作與口語表達李佳穗3A+
計算機網路逄愛君3C+
計算機結構洪士灝3B
自動機與形式語言林忠緯3C+
軟體工程設計李允中3A-
機器學習林軒田3B

桌球初級

每周花費時間(課堂外):0 hr
出席次數:全勤

就桌球,老師桌球很強但話蠻多的,有時候講到桌球或棒球就會停不下來。上課大概就是講解十幾分鐘後就分組練習,比較麻煩的是考試都擠在最後兩周,要考正反手、左推右攻、切球、發球、還有對打十場,桌球菜鳥如我發球一直發不過。喔還有筆試但很簡單。

職場英文寫作與口語表達

每周花費時間(課堂外):1~2 hr
出席次數:全勤

很不錯的一堂課,老師和同學都很 nice。前幾節課是老師會教一下怎麼寫英文 resume、cover letter 等,之後都是請講師來分享一些面試、職場上的技巧(這學期有新創總經理、人資長、工程師、外交翻譯等等),自己是覺得內容都很有料、受益良多。學期末有個分組 pitch 一個自訂產品,很幸運遇到不錯的小組員。

計算機網路 (雙班)

每周花費時間(課堂外):3~4 hr (有程式作業時要一整天)
出席次數:開學 + 期中 + 期末

根本沒去上課,我都直接看投影片,而且網路上其實也有很多教材,所以不會很難。主要內容包含 application、transport、network layer,剩下兩個應該是因為時間關係沒上到。作業有三份:

  • hw1: 玩 wireshark 之類的工具、拆封包內容等,跟 NASA 的形式有點像
  • hw2: 用 C 寫一個 http server 和 client,可以傳文件和影片
  • hw3: 用 C 實作 SACK protocol 和 TCP congestion control (簡化版)

作業要拿到平均分應該不會很難,但 SPEC 有些地方比較模糊所以要常看 cool 討論區。期中那時候因為在弄 HCI 的實驗,其實沒啥讀就直接上了,結果就炸了只拿了 50 分。好險期末有認真扳回一成,不然這就是我第一堂被當的課了。吃了 C+ 我是真沒預料到,可能是大一修過 NASA 之後就膨脹了,投影片都隨便看看,反正 TCP UDP 啥的簡單啊,欸?BitTorrent?我沒學過啊?

計算機結構 (雙班)

每周花費時間(課堂外):3~4 hr (有作業時會多一些)
出席次數:開學 + 期中 + 期末

也是根本沒去上課直接看投影片,我沒想到一個學期可以把整本 computer organization and design 上完,而且細節也都有講到,個人覺得後半段 processor 和 memory 的部分蠻有趣的,讓我對程式執行效率有了更深入的理解。不過我以後應該還是不會往這領域走就是了,因為 verilog 真的很無趣,不是因為很難寫,是很無趣,我也不知道為什麼,寫計網作業的時候還會覺得寫 C 好好玩喔,寫到計結的 verilog 作業我真的是 TMD 完全不想寫,可能我天生對 verilog 過敏吧。

喔然後想抱怨一下考試的題目,就感覺很多是教科書或投影片上沒有的東西,題目又寫得很模糊。舉例來說,期末考最後一題我印象中是給 Nvidia 某個晶片的架構圖,然後要算加了 NVLink 之後的 minimum bandwidth 是多少,阿不是阿,這堂課沒教過 bandwidth 怎麼算阿?當然我也不能說什麼,就是我學的不夠多而已,但準備了很久的東西根本沒考還是讓人蠻沮喪的。

自動機與形式語言

每周花費時間(課堂外):3~4 hr
出席次數:開學 + 期中 + 期末

超爽沒作業,每次都到考試才想起這門課的存在,惡補課程影片,結果就是大吃一個 C+。沒什麼好說的,老師教學認真,也教得很清楚,考不好純粹是我不認真,對不起。

軟體工程設計

每周花費時間(課堂外):8~10 hr
出席次數:線上課

評價兩極的一堂課,選之前就有學長跟我說這堂課很雷,但修完之後我是覺得收穫蠻多的,學到蠻多軟工知識的。話說我怎麼又修到碩班課啦,每次都只有我一個大學生是怎樣,不過這不是重點,教的東西不難,每周都會有作業要分析 requirement 和畫各種 class diagram,分組進行。教授感覺是個講話比較直接的人,口氣有時候有點不好,但有時候又有點好笑,怎麼說,算是個好教授啦。

上課方式是用 skype (認真講,skype 真的難用,問題很多,這我也有期末 feedback 給教授),早上 8. 準時上線,基本上就是教授聽各組的作業報告然後給 feedback,中間會休息一下,最後由教授自己的投影片講解建議的解法,就下課了。後半學期會有一個 code tracing 的專案,每個小組挑一個 spring framework 的部分去看 source code,然後畫 class diagram,最後期末報告各組對該 framework 的分析,量蠻多的,總共要看 3000 多行的程式。考試部分都是給 requirement 畫 diagram 然後寫 code,都不會很難,重點在 diagram 要畫好。

不過整堂課程的評分標準都很模糊,教授是說他主要會看每個同學有沒有進步,只要有進步都不會給太低的分數,反正我也不是很在意,有作業就寫、有考試就考。總而言之,還是學到蠻多軟工的知識,自己覺得對寫程式很有幫助,可以知道怎樣寫出更容易維護的程式。

機器學習

每周花費時間(課堂外):8~10 hr (一份作業通常要花兩天)
出席次數:0

林軒田教授的神課,內容跟教授在 coursera 的課程 幾乎一樣,這學期是以英文授課,所以我通常都會先看 youtube 直播,有看不懂的地方再去看幾次中文版。沒有考試但很多作業,而且我覺得偏難。學期一開始時我本來是有打算做筆記整理在網站上的,但學期開始一陣子後發現我沒時間在那邊整理筆記,作業太多太忙了,就不做了。這門課真的是每周都拿大量的機器學習知識轟炸你,幸虧我這學期修的課不多,才有時間可以慢慢消化理解,否則我應該會退選。不過這堂課真的很不錯,認真的可以學到好東西。

我認為最有趣的是 final project,最痛苦的也是,這邊要感謝我們組的組員們,都是你們的 carry 才讓我們可以在 final project 拿下不錯的分數。Project 大概在期中結束後開始,要自己 train 一個 binary classfication 的 model,我自己是在實作的過程中學了很多,包括怎麼做 stacking、blending、參數最佳化,雖然大多是用套件,不過真的實作出來看到預測結果真的是有一種這學期學的知識被用上的感覺,很爽。但是訓練和調參的過程真的挺難受,基本上每次試不同的 model 都不知道結果會如何,即便 validation 不錯還是有可能 overfitting,而且如果用 stacking 什麼的一次訓練就是快十個小時,就挺難受的。

總之,好課一生推。