111-1 in NTU

引言

突然就變成一個大學生了,想想這網站也快三年了。
學期初選課的時候參考了不少學長的修課心得,所以這學期也來打個學期心得。

修課

大學最重要的一環應該就是修課變得相當自由,跟高中定好的那樣不一樣。以下就簡單分類(順序大概是看心情)。

系上必修

計算機程式設計

簡稱計程,是系上的三學分大一必修,基本上就是在教 C 語法,一路到檔案處理之類的。評分是採用五次小考,每次各佔 20%,不調分,所以其實考完前幾次差不多就能算好自己可能的分數帶來決定要不要停修。聽說教授教得蠻爛的,所以系上很多人到後面就沒什麼去上課,不過我也認同在程式學習上實作(刷題)比單純看書學習重要,教授的有給一個 OJ 叫 JudgeGirl,上面會放前幾年的考古題以及一些關於各個語法的題目,相信刷點考古題會比較得心應手,具體來說應該是偏硬。

不過在教授開學前寄給大家的信中也有提到,這堂課有一個職位叫「真強者」,就是對於那些高中有競賽等等經驗的人可以去寄信跟他應徵,門檻不高,我認識的競賽圈幾乎都有當上,我也是其中一個。真強者要做的事情是組公會讓公會內同學提問,不過因為我很邊緣公會沒什麼人,所以我這方面沒做什麼事。還有要做的就是考試前需要驗題,具體來說就是在禮拜一跟禮拜二(有分單號班跟雙號班)的考試前,會在禮拜四的中午開會決定題目的難度以及要放在哪些班,並且對於題目的「微調」可以在此時提出來討論。所以教授會給出題目的點子,助教要把題目出到 OJ 上,然後真強者們要在週末的時候上去把題目給 AC 掉,並且確認測資和題敘之類的是不是好的。
如果是高中有競賽經驗的非常建議去應徵,因為嚴格來說你要寫的題目數量跟考試是一樣的(每個人只需要驗自己所屬的單雙班的考試題目),像我到後面混一點基本上都是在禮拜天晚上才去寫題目,那個時候有什麼測資問題之類的通常都已經被抓完了,所以就快樂的寫完三題然後就沒事做了,還可以邊躺在家裡邊寫。

從去年開始有一個新制度叫 Cyclomatic Complexity (CC),不過我不是很認同這制度,所以只提醒考試的時候要注意不要超過,以免學期末發現自己的成績跟算出來的不一樣。

演算法設計與分析

簡稱 ADA,系上的三學分大二必修,基本上是介紹基本的演算法和一些數學分析。具體來說教的東西大概是

  1. 複雜度分析(含分治的複雜度)
  2. 分治
  3. greedy
  4. dynamic programming
  5. 圖論
  6. 近似(approximation)
  7. 計算理論(P and NP)
  8. 隨機演算法

如果高中有在競賽圈的話,應該只有複雜度分析、近似、隨機、計算理論需要去了解一下。有分四次大作業和一堆小作業,小作業都是上課內容所以只要記得去寫就好,每次大作業都會有手寫跟上機,上機的部份在前三次基本上都是在競程來說簡單的題目,所以不會有什麼壓力。第四次的上機就變得詭異起來了,因為近似、隨機、NP 問題等在競程都不太常出現,但難度也不會到太高。(除了有一題桌遊題,但那題後來變加分題所以也不用寫,也祈禱以後不要再出這樣的題目了)
手寫的部份會比較麻煩,因為你會需要去證明時間複雜度以及正確性,期中考跟期末考也是這樣的形式。題目的部份不太需要擔心演算法設計不出來,因為就跟競程差不多,小心不要假解就行,但在證明就會略顯煩躁,而且期中期末考題目不多但都要寫很多字所以建議透過考古題練速度。考古題不太公開,所以可能會動用點人脈。
寫手寫作業會需要花一定的時間,大概是每三個禮拜六到十二小時,不過對於有競程經驗的來說負擔也不會太大,而且競賽圈的應該也都 A+ 了。所以有不少大一的都會加簽進來(因為是一類加簽,按個按鈕就能上),競賽圈的人來說如果大一沒有其他很怪的硬課的話蠻建議先修的,非競賽圈的就可能要先審視底子來判斷 loading。

微積分

有三個教授,我修的是蔡雅如教授的。
不知道為什麼要上的數學課,有分「微積分1」跟「微積分2」,加起來共四學分,在期中考後會從 1 轉成 2。有兩次的小考跟一次期考,基本上都很吃速度不然容易寫不完。小考佔比不大,所以期考比較重要,很推薦 vir 考古題。我 1 跟 2 都是小考考完覺得自己人要沒了,但是期考救了回來。
蔡雅如教授給的作業蠻多的,每個禮拜需要花半天左右寫,但是我自己覺得這樣練習效果很大所以基本上不太需要花其他時間複習。三個教授的班期考跟小考都同一張考卷所以不太需要做選擇(但給分方面好像會有點差別?),但我私心覺得蔡雅如上課帶很多例題很不錯。

普通物理學甲上

比微積分還更不知道為什麼是必修的課,根據資工系規定,物化生要挑其中一門來修六學分(兩學期)。我修的是單號班的胡德邦教授的,開學前就聽說過他有些很酷的事蹟,然後課很甜涼;相比起來雙號班的就教得比較中規中矩,考試跟給分都一樣。普物應該會是我四年來最有可能被當掉的科目,所以我開學後就加簽進單號班的了,只要在暑假時寄加簽信給他就好(動作要快一點,因為後來就不給加簽了),教授下學期只會給上學期加簽的繼續加簽,所以不要猶豫!
原本有期中跟期末考,但在期中考前一週時教授就決定取消期中考了。所以剩好幾次的作業跟期末考,作業基本上就是幾題題目,然後我一開始都是抄 toppr,後面幾次改抄同學的,基本上都有拿滿。然後算分方式是 $\max(\text{作業}, \text{期末考}) \cdot 0.6 + \min(\text{作業}, \text{期末考}) \cdot 0.4$,所以我作業拿滿的情況下期末考 0 分也能及格,整個令人心安。
期末考可以帶一張 A4 紙,我把一些作業題和公式抄上去,考卷考了快一半的作業題,根本沒改數字,所以我直接把算式全部抄上去就好 XD。準備了一些公式但我發現我沒去上課所以也不會用。最後索性撈了個 A-,也比被當好太多了。
如果不是非 A+ 不可的話,最高 CP 值的方式應該是作業直接用抄的,期中期末考就把作業題抄在 A4 紙上,基本上就能有不錯的分數了,並且幾乎不用做任何努力,根本不像一堂三學分的課。然後花點時間搞懂作業題目、準備公式來拿作業題以外的分數就看個人努力了。
什麼?你說怎麼沒有上課方式之類的資訊?都沒去上課怎麼會知道這些。

系上選修

計算機概論

三學分的大一選修,有分單雙班,我是修雙號班的莊永裕教授的課。教 The Elements of Computing Systems 的東西,因為時間的關係後面的內容講比較淺。大致上會從邏輯閘、數位電路、CPU, Memory、Machine code、Assemby、Virtual Machine、高階語言、Compiler 與作業系統這樣的順序由底層往上教,最後的目標就是跟著課本打造出一台可以跑程式語言的電腦。
作業的部份會有五次 Project,就是跟著課本的那個網站上面的前五個 Project,剩下的因為時間關係就沒有出,因為是課本的作業所以網路上也解答,但也不難所以自己寫不會怎樣,而且課本網站有檢查器能夠幫你看作業對不對。有一次的手寫作業,有點像是期中考複習,大概就是把期中考會有的題型出成作業讓你熟悉,好好寫不會拿低分。期中考也是改分改得很鬆,所以有好好上課就能拿高分了,是 open book 的但我幾乎沒用到自己準備的筆記。
期末會有一個 Final Project,我們這組是用課本設計的程式語言寫一個遊戲,應該大部組別都是這樣,那個語言很難寫,寫起來讓人很生氣,不過實際上也只花三四天就做完了(其實是自己太混拖到最後才開始做)。
教授的上課都會錄影,所以我其實去的頻率不高,但影片都會好好看完。我自己覺得教得蠻好的,電路的東西他會好好的一條一條拉給你看,比起直接看完整的圖會更方便理解,Final Project 的給分方式蠻迷的,我們這組做得很隨便但還是有 A+,所以應該算甜。
單班的東西跟雙班不一樣蠻大的,單班比較跳來跳去,我自己是比較喜歡雙班的東西,因為教得夠底層也夠有系統,相比起來單班感覺就是很多東西各學一點而已。

程式結構與設計

三學分的系上選修,一言以蔽之就是 ICPC 培訓班,開課的教授是鄭卜壬教授,但我應該只有在第一堂跟最後一堂課看過他。
每個禮拜六要團練 Vir 一場比賽,作業就是團練到的場的題目們,有時沒有團練的時候作業會是助教在 CF 抓 *2700-*??? 的題目,隊上三個人的作業分數一起算,作業很難,因為各 regional 的最難幾題通常都很防破台但你需要把他寫掉,CF 挑的那個難度也不是像我這種笨蛋寫得出來的。寫作業的時候都是邊上網查題解邊問人,同時身陷 debug 地獄,尤其隊友不愛寫作業的話整個題數就會看起來很少,在事情比較多的時候又有培訓班作業是真的很搞人心態,偏偏作業應該佔了很高的佔比。
給分方式是個迷,但總歸來說會排名所有人然後照名次給盡量能給的高分的樣子,所以應該還可以,我到後面沒什麼寫作業也有 A,但是對於那些拚 A+ 的人來說把作業都給寫完確實很花時間。

共同必修、通識、系外選修

健康體適能

一學分的共同必修,系上分三個班,我是修莊國偵的。
就高中時的體育課一樣,看體育老師心情每次教不同的東西,給分也很迷,理論上看出席率跟體適能成績,但實際上是完全不知道在幹麻。唯一的建議就是珍惜上課時光,因為體育課大概是可以看到系上最多同學的時候了。開學前的時候我原本想要加簽外系的,但現在我算慶幸當初沒這樣做。

新生講座-活出精彩

兩學分的選修課,只有 pass/fail 所以不會採計成績,開課教授是孫效智但實際上不太是。
這堂課就是要好好出席填表單,並且每次上課都會找一位教授之類的來演講不同主題,課後要寫 50 字的心得,因為不會管上課態度所以是幾乎沒負擔。期末要寫個 1000 字的總心得,因為有很多演講所以基本上不會沒題材,字數少也很輕鬆就寫完了。
我很推這堂課,沒什麼負擔外各個演講的內容其實都蠻有料的,主軸當然就是面向大一新生,基本上就不用有壓力的來聽演講就好。

國會與憲政民主

兩學分的通識課,開課教授是劉有恆,教的是美國的國會一些東西,因為教授喉嚨不好所以每堂課都是他會把要講的東西打成逐字搞放上來,可想而知的是平常根本不會去看。整學期要做的只有期末考跟期末報告,期末考是考一個禮拜,期末報告是 2000 字,內容跟國會有關就好。我根本沒有看過上課的檔案,因為是文字檔所以在期末考的時候甚至可以用搜尋找關鍵字,寫起來很輕鬆而且又給你一個禮拜。期末報告也是亂寫一些東西水字數,因為我真的不擅長寫報告。基本上整門課是超涼,在期中的時候甚至會忘記自己有修這堂課。
給分是迷的,但是大家成績都不錯,身邊也有不少 A+,但因為我只有 A 所以我不太想說他甜(雖然是我期末考跟期末報告都在亂寫)。根據有把課程看完的同學說他教的其實蠻有料,但我自己是什麼都沒學到,所以就看想要用什麼心態對待這課吧。

課外

警告:以下是垃圾話

我認為在大學應該比起高中還有更多課外的事情需要做,但這點我就對自己蠻失望的,因為我基本上什麼都沒做到。一開始把自己關在自習室裡面,後來覺得這樣不太好所以把自己逼到舊館來社交,但人際也沒因此變得比較好,在一群人裡面我還是顯得格格不入,而且還是一樣不知道怎麼講話。
課外知識也沒什麼學到,日文可能算是有固定的在讀,但在期末周也是直接放推,考了 N3 但考得很醜。關於 Linux 的知識也沒什麼增長,甚至整學期除了培訓班跟 ADA 作業以外根本沒什麼寫程式,開發什麼的更是不用說了。都懷疑自己到底是不是在讀資工系。
課外技能也是沒有增長,在系上的資訊周有去當工人,可是只換來沒學到任何東西的空虛感。看到不管是高中就認識的競賽圈的人還是大學才認識的同學,每個都在不斷往他們所想的那個樣子進步,自己卻用著課業當藉口在退步,然後課業也沒有搞得比較好。

這樣下去絕對不行,但我也沒想到可以怎麼解決。只希望寒暑假可以趁著時間多學一點東西,並在不要太久的時間內找到解決方法。

後言

這學期還是有蠻多不一樣的體驗,住宿也讓我自由很多,多了很多的第一次,在弄全國模擬賽的時候也蠻開心的,但還是覺得這樣的生活不夠充實,期許自己下學期能夠往更多地方踏出腳步。