---
# System prepended metadata

title: 台大資工X數學 大二上修課心得
tags: [2024Fall]

---

# 台大資工系X數學 113-1 大二上修課心得

因為想要安排在三年內修完本科系跟雙主修科系數學系的必修課程，所以這學期除了體育以外其他都是必修課。基於這一點，從學期初就有計畫要產出這篇修課心得了，但一方面實在是太懶，另一方面本來想等ADA成績出來之後再發，現在看起來是等不到了。（寫這段話的時候是2/4，真的很好奇一門課的成績最晚可以拖到多晚還不出來。）

## 資工系必修

### 自動機與形式語言

* 課號：CSIE3110
* 授課教師：林智仁
* 學分數：3
* 等第：A+
* 甜度：5/10
* Loading：3/10
* 推薦程度：7/10
* 課程用書：Michael Sipser, Introduction to the Theory of Computation, 3rd edition

老師上課的簡報和影片都會放到課程網站上，所以不用去上課也沒關係，我自己是第二堂課之後就沒去過（當然老師還是會希望大家去現場聽，說他會補充一些東西）。事實上也是沒什麼人去上課，再加上因為是全英文授課，到現場聽課的學習效率也不是很高。

加簽因為是三類，人數也不會滿（比較多人去另一班），所以應該是加選有選就會上。

一學期考三次試，六次作業，學期總分應該是作業全部佔25%，剩下的每次考試各佔25%。考試open book，可以帶任何紙本資料，包括筆記、上課簡報、課本等等，沒有課本也可以在考試的時候跟助教借課本來查。給等第的方式很有趣，老師說他會根據隔壁雙班（林忠緯班）的A+比例來給單班的A+比例，盡量讓兩邊的比例差不多，也就是說某種程度上你會希望不要跟很多很強的人修到同一班，當初有一部份是基於這個考量才修單班的。另一方面是當初打聽到的是忠緯班的考試比較多背背題，智仁班考題比較活一點，不過結果今年的考題好像沒那麼難，操作題佔的比例蠻高的。考古題的話課程網站上有提供，上網查應該也不難找，或是直接去改網址也可以找到最近幾年的題目。

課程內容個人覺得蠻有趣的，基本上就是一門數學課，內容是關於電腦這個概念的抽象化，用數學的方式刻劃計算模型，然後討論不同的計算模型可以解決哪些問題，包括經典的Halting problem跟P versus NP problem都會教到。課本的講解蠻詳細的，定理的證明跟動機都有詳細敘述，所以我後來都是簡報配課本服用。

行政方面感覺有蠻多可以加強的地方。首先考卷上的勘誤實在有點太多，而且有時候題目的敘述不是很清楚（有可能是英文授課的關係），或是他會預設你要用上課或是課本上某個特定的方法但是又不講清楚。然後考試吵分數的方式實在是很謎。教授會先丟一個Webex連結，考完試的下一個禮拜正課結束之後，要吵分數的人就可以排隊等進會議室裡面。不太確定運作方式是怎麼樣，但是第一次期中的時候我跟室友早上起來排隊，結果到中午一直都沒有進到會議室裡面，後來就放棄了。第二次期中也是重複排了好幾次才成功跟教授講到話，還好最後有要到分。最後成績分佈是20/105個人A+，超過一半的人A-以上，應該還算甜吧。

喔還有要印大抄盡量提早一點印，第一次期中前一天晚上在德田印大抄結果大塞車，printing queue等了快一個小時，印出來還缺墨水。~~建議系辦播一點冷氣經費給印表機~~

### 計算機網路

* 課號：CSIE3510
* 授課教師：周承復
* 學分數：3
* 等第：A+
* 甜度：8/10
* Loading：7/10
* 推薦程度：7/10
* 課程用書：Computer Networks: A Systems Approach - by Larry Peterson and Bruce Davie, 4th Edition

顧名思義就是在教現代網路的結構，知識點多，要背的成份蠻高的，上課的內容涵蓋application layer、transport later、network layer，再往下就~~交給電機系就好~~沒有教了。上課的簡報跟之前的影片會放到cool上面，到期中之後可以明顯感覺到上課人數變很少，認真數過大概不到20個。到期中之前我每次上課還很認真用HackMD做筆記，但後來發現這樣實在太沒有效率，而且不管怎樣期考之前還是得重新順一遍，後來的筆記就不了了之。可能還有部份原因是早九實在是精神不濟，如果跟我一樣覺得早起很痛苦的話，我覺得不去上課只看簡報跟課本也會有不錯的學習效果（只看簡報會有點太簡略）。

老師前面上課的進度還很溫和，還會停下來講一些他覺得很有趣的地方，像是那時候講packet switching會有queueing的時候，就認真的算了一遍發生的機率給大家看~~還是他去教機率好了~~。期中之後感覺上課進度快很多，可能是東西變難或是他發現要教不完了~~或是我上課睡覺的時間比例變多了~~。期末之前有兩次講座，會請業界的人來分享現代網路相關的發展/應用，出席會加分，但考試應該沒有考到內容。

期中期末考兩次試，作業四次，還有一個期末大project要大家用C++寫一個online chatroom，支援通訊，檔案傳輸，影音傳輸等等各種功能。因為上課都是教理論，實做的部份完全沒提到，所以全部都要自己摸索，寫這個作業的過程就是(1)開好ChatGPT跟VSCode，(2)把ChatGPT的code貼到VSCode，(3)把VSCode的error message貼給ChatGPT，(4)重複以上直到完成。順帶一提，同時修計網跟SP的其中一個好處就是可以把SP HW1的server模板拿到計網project用。這學期單一項目花我最多時間應該就是計網的final project，好在助教看我們可憐，把deadline調到期末結束之後的一個禮拜，才有時間好好寫。

老師會提供考古題，ptt也找的到比較久以前的考古。實際考試內容跟考古題有八成是一樣的，所以一定要記得寫考古。今年多一些不太一樣的是batcher-banyan network，課本上沒有提到，要特別去了解一下他的運作方式。

### 系統程式設計(SP)

* 課號：CSIE2210
* 授課教師：鄭卜壬
* 學分數：3
* 等第：A+
* 甜度：5/10
* Loading：9/10
* 推薦程度：9/10
* 課程用書：Advanced Programming in the Unix Environment, 3rd Edition

對我來說本學期的大魔王，所有資工系的必修裡面這門課就佔了我超過一半的時間。APUE應該是Unix系統程式設計很經典的一本書，上課內容也圍繞在Unix系統的架構還有怎麼用C語言跟系統溝通。跟課本比起來，PJ更強調Unix的「邏輯」，所以他會特別講一些system call的演變歷史/設計理念，還有要如何當一個「好」的system programmer，這也是我覺得到現場上課的其中一個好處。SP也是要背的東西挺多，但是PJ是真的教得很不錯，可以感覺出來Unix的設計是有跡可循的，上課風格也蠻幽默的。另一班不知道上的怎麼樣，但是很多雙班的人還是會來借PJ的影片看，不過客觀來看雙班的考試有比較簡單，而且可以帶大抄，所以最佳解可能是簽雙班但是來聽PJ的課？

期中期末各30%，手寫作業四次總共8%，程式作業也是四次總共32%。程式作業應該可以說是SP主要的loading，每次都花掉我一到兩個整天寫（假日的那種整天）。模式跟DSA很像，會有一個很長很長的spec~~還有沒什麼用的故事~~，然後會要你用上課教的system call實作出來他想要的功能。大部分時候要如何實做其實蠻明顯的，甚至他會手把手要求你一定要照著spec的方式實做。少數比較難的subtask會需要動腦想一下怎麼樣才不會deadlock/race condition。每次PA都會有report，就是把程式的設計邏輯寫一寫，或是做一些效能實驗。沒意外的話PA都可以拿滿，坊間也有流傳許多強者們自己寫的judge。

考試的部份還蠻活的，老師會提供考古題，不過考題大概只有五成相似而已，內容還是蠻活的。比較大的重點就是PJ很愛考各種deadlock跟race condition，還有要怎麼修好，這種題型期中跟期末都有出現過。期中成績通常不會太好看，我們這班平均56，所以考低也不用急著停修。期末依照慣例PJ會把滿分出到120~130，扣掉停修的人之後大家平均可以來到90+。PJ自己是說他不會調分，就是把期末出高分出扎實，讓大家自己拿分數。今年剛好是碰到網媒所生日（PJ是網媒所所長），所以參加的話可以加總成績2分，可以賺分數又有東西可以吃一舉兩得一定是要捧場一下的。

這學期比較特別的地方是剛好有兩次颱風都放到禮拜四，PJ想教的東西又很多，所以好幾個禮拜他都叫大家回去自己看影片。但其實沒有颱風假他教不完也會叫大家回去看影片，雖然是本來就應該要學會的東西，但還是覺得蠻北爛的。好在PJ人不錯~~知道大家其實都沒看影片~~，上課還是會把跳過的東西快速帶過。

### 演算法設計與分析(ADA)

* 課號：CSIE2136
* 授課教師：呂學一
* 學分數：3
* 等第：A+
* 甜度：6/10
* Loading：1/10
* 推薦程度：8/10
* 課程用書：Introduction to Algorithms, Fourth Edition.

整個學期只考三次試，沒有作業也不點名，應該是涼到不能再涼了吧。ADA可以說是DSA的延續，相較之下更著重在如何設計出適合的演算法。不過說實話DSA也有帶到一點演算法設計。個人覺得DSA跟ADA重疊的部份實在有點太多，前半講的複雜度、sorting、還有DSU，其實都在DSA都有講過了，後半的P versus NP則是在自動機講過，所以實際上收穫沒有很多，尤其是如果有摸一點競程，greedy、DP、graph algorithm一定都多少有接觸過。推薦有一點程式底子的人大一就來修~~然後大二就可以去修複分析~~。

說是沒有作業，但這門課的助教好像還挺忙的。就我的觀察好像160個人，只有兩個助教改考卷，看起來是蠻吃力的，不過聽說是有一個助教擺爛，詳細怎樣也不太清楚。第一次期中的成績印象中是拖到11月底才改出來，然後第二次隨機客就特別額外徵人來幫忙改。本來以為情況有所好轉了，結果期末成績拖到現在大家都還不知道，實在是一大雷點，不過去年就沒聽說過這種情況，應該是只有今年特例吧，看在隨機客上課很認真，簡報也做得很用心，加減推一下。ADA也是星期四上課，所以也停掉蠻多次，但隨機客的作風是就不補課，不過最後還是有上到P versus NP，蠻厲害的。

順帶一提其實我原本是單班，但考量這學期的總loading應該不輕，還有呂班loading趨近於零這個前提，還是先轉班再說。

## 數學系必修

### 計算機數學導論(ICM)

* 課號：MATH3604
* 授課教師：王偉仲
* 學分數：4
* 等第：A+
* 甜度：5/10
* Loading：9/10
* 推薦程度：4/10
* 課程用書：Tobin A. Driscoll, Richard J. Braun - Fundamentals of Numerical Computation-SIAM-Society for Industrial & Applied Mathematics (2017)

這堂課分成禮拜一在新生的正課跟禮拜三在天數的Lab。正課從學期初開始會講到浮點數、一些線代、還有複雜度，到後面教你~~見樹又見林~~逼近非線性方程的解跟用QR分解解決最佳化問題。課程內容還蠻符合期待的，就是在講如何在實際（有限資源）的條件下，盡可能的逼近所求，用數學的語言描述就是解方程式或是最佳化問題。以大三的課來說實在不需要什麼先備，可能線性代數用到蠻多的，不過偉仲講的也很仔細，除了證明的部份稍微簡略一點其他都能理解。

本來期待Lab的部份會教MATLAB，但偉仲哥今年決定迎向Python的懷抱（後來才發現好像不是今年才開始用Python的），所以Lab跟程式作業都要改用Python寫。一方面不須要學太多新的東西，但這樣一來在這門課就真的沒什麼收穫了。期中之後Lab除了複習正課還會講機器學習，非常神秘，不太確定數學系的大家怎麼看，但感覺也是沒吸收到什麼東西，上課講的也都是機器學習的理論。在這門課最大的收穫可能是學會怎麼用matplotlib。

作業爆多。眾所周知數學系的課就是loading重，每個禮拜都有作業。但是計數導又是重中之重，每個禮拜出個十幾題，然後裡面有計算有證明又有程式，真的搞不懂王大哥在想什麼。好在作業我們有小組分工，就三個人平分用LaTex打一打然後共用（平分完還是很多），好在助教看起來沒什麼在管作業，就是有寫就好。然後還要弄個期末project，主題隨便，王大哥只有要求(1)要跟數學沾到邊而且(2)要有程式，然後講了一堆什麼不會寫程式很可惜，什麼tell a coherent story的，什麼importance and novelty，總之就是要生出個10頁左右類似小論文的report，還有一分鐘的講解影片。好在我學期中就有偷寫一點程式，最後在期末週結束之後花了一整個週末把報告肝出來，特別感謝辛老大幫我們借天數討論室，還有組員們一起應付這個拉基report。

王大哥還很喜歡上課問問題/回答問題，就有個什麼加分制度，非常神秘。不知道怎麼的上課還扯到心智圖，然後還真的給我出一次作業，叫我們回去把root finding methods畫成心智圖。上課一直「你們這個世代」「你們要注意」講一些他的人生大道理，然後都沒什麼知識點。可能是他的這些toxic positivity讓我覺得聽了很燥，但也有可能只是我個性比較反骨一點。要不是因為他是數學系必修，大概是不會修，尤其是現在又有七選五了。有一說一，其實最後給分應該還是算扎實甜的，應該是有調點分。

相較之下，助教人真的很不錯，還會讓我們延長考試時間（王大哥考試也是出到讓人寫不完，貫徹他的作風）。考試也有分考理論（正課的內容）以及程式手寫題。理論的部份不難，有一些要背的，但是都可以帶大抄（學習筆記），所以重點就是大抄要寫詳細，因為他會考一些定義累的或是他簡報講的觀念。程式手寫的部份就是考成是的理解，大部分也都是課內的，少部份是助教口頭講的觀念，沒認真聽的話可能寫不出來，就只能通靈或靠經驗寫。另外還有佔20分的上機考（沒錯，理論＋程式手寫＋上機在一天考完，真的很瘋），只考半小時，所以就是比手速，會考一些上課講的演算法的實做，一樣可以看學習筆記，所以學習筆記就是把能放的東西都貼上來就對了。

### 幾何學導論

* 課號：MATH5356
* 授課教師：翁秉仁
* 學分數：4
* 等第：A+
* 甜度：4/10
* Loading：5/10
* 推薦程度：7/10
* 課程用書：M.P. do Carmo, Differential geometry of curves and surfaces, 1976.

幾何學教的就是微分幾何。上半學期從平面曲線到空間曲線到曲面，有大概一半的時間講一些基本的定義（曲率、扭率、shape operator、高絲曲率/均曲率），其他還會講一些特殊的曲線跟曲面，感覺東西有點散，要背的成分居多，考試會給一些公式表，但是比較基礎的像是fundamental forms、Christoffel symbols都要背。會用到蠻多多變數微積分+線代，複分析上課會提到一點點，可能推導證明會用到，但是考試的時候基本不會需要相關知識，就是套公式算算算。會需要一點微方，但只要像我一樣只會解最簡單的線性齊次就可以了（不會超過二階）。

其實看得出來翁餅人對於幾何的教學蠻有熱忱的，從微分幾何經典的定理，到內秉幾何的直覺，再到幾何學發展的歷史哲學。講下來每次去上課都沒很專心聽感覺有那麼點抱歉😞（但是上課內容幾乎都是計算推導實在不怎麼吸引人）。上課用的是他的自編中文講義，內容蠻完整的，就算只看他的講義不看課本，應該也能掌握八成。

作業也是每個禮拜都有，兩到三題，可以一組兩個人交一份就好，也可以不要分組就自己交一份，應該是可以一個人應付的程度。助教課的時間很奇怪，似乎是因為助教的個人因素，沒辦法在原本的時間（禮拜五第4節）開助教課，所以改到禮拜三中午12點~13點，非常神秘。阿我中午要吃飯，所以除了第一次買午餐一邊吃，之後是一次助教課沒去過。

考試感覺蠻扎實的，難度分佈平均，分成ABCD四個部份，A部份是簡單是非觀念題，B是基礎的計算題，C有計算也有證明，D部份是Bonus。一個部份會出很多題，但是只能選一些寫，像是六題選三題寫之類的。全部寫滿的話是有辦法拿到超過100分的，不太確定超過的分數怎麼計算，不過看起來最後除非不及格是不會調分，結論應該是蠻不甜的。

### 代數一

* 課號：MATH7006
* 授課教師：林惠雯
* 學分數：5
* 等第：A+
* 甜度：5/10
* Loading：9/10
* 推薦程度：10/10
* 課程用書：Dummit-Foote, Abstract Algebra N. Jacobson, Basic Algebra I & II

「[大家，痾，哼哼哼哼](https://hackmd.io/@alvingogo/BJIUF7-xT)」—— 林惠雯，2023.10.14

這門課大概是這學期最滿意，也收穫最多的課，每個禮拜都在期待下禮拜要教什麼新的東西，大概是上大學之後唯一一門我有做到預習＋上課專心聽＋做筆記＋複習的課了。從大一修了數學系的線代就認識了LHW，講課很生動幽默，有一種在大學教授身上很少見的活力敢。喜歡跟學生互動，像代數課這種不到三十個人的小班級，她應該每個人的臉跟系級名字是對的起來的，非常厲害。就跟多數數學系課程一樣，LHW很注重「為什麼」，在介紹新的定理/觀念的時候，他都會~~連哄帶騙~~引導大家思考問題，理解為什麼數學家會這樣去定義，這個定理解決的什麼問題，諸如此類。

會想修代數主要是本身就對代數很有興趣，感覺光是講出同調代數這四個字就很帥了。另一方面也是因為大一的時候修過楊一帆的代數導論一，上完覺得不過癮，才想說大二來修代數一二，如果有修過代數導論的話會十分有幫助，上半學期的東西都有在導論課有cover到。不過相對地，如果不是對代數有一定興趣的人，就沒有很推薦來修這門課，課程網上面寫預期每週課後學習時數12小時，感覺所言不虛。因為有用到category theory，比起導論課又更加抽象了。

這學期的課程主要關注群論，從常見的群到經典的群分類(Sylow's theorem)，還有一點點群表現論。下半學期帶到extension problem、category theory跟同調代數，最後再回到induced representations。其中會用到蠻多module theory，但最後還是有回到群分類就是了。(co)homology的部份可能碰過一點點代數拓樸會有更深入的了解，但是作業跟考試都只要會算就好所以沒碰過也沒關係。

評分方式作業30%，期中期末各35%。作業每個禮拜會有兩份，一份會有兩道三題左右，不會超出課程內容太多，就是一些應用，或是把上課left as an exercise to the reader的部份出成作業。每個禮拜五的助教課會請同學上台講解作業題目，助教會幫忙稍微補充或是更深入講解作法，講錯的部份助教也會幫忙補，所以不用太緊張。助教課剩下的時間就用來補充，印象比較深刻的就是下半學期有提到一些代數拓樸，算是把(co)homology這一塊的背景動機有稍微補全，不過大部分時候助教課的東西實在是非常困難，都有聽沒有懂。期中考前不久，助教公佈了一份bonus題，裡面有五題比較困難的加分題，理論上用基礎群論/數論就可以解決，到期末考之前都可以繳交，我自己是挑了兩題比較不花時間的寫一寫交出去，具體加了多少分不太清楚。

考試的部份期中跟LHW去年的線代一樣，有分A1(normal version)跟A2(challenging version)，跟線代不一樣的是並沒有要求一定要寫A2才能拿A+，不過A1卷跟A2卷滿分分別是100跟120，還是有差。我覺得如果對課程內容有一定程度的掌握的話，寫A2不一定會考比較爛，首先A2有一題讓你隨便state and show a theorem就送了20分，再來A1卷考很多上課的定理跟證明，都是需要背的，像是Chinese remainder theorem over PID我連要寫出敘述都要花點時間。而且不排除A2卷的分數是有經過LHW主觀幫忙加一些的，總之最後分數是沒有後悔讓我寫A2。期末就沒有再分兩版，就是一份扎扎實實120分的final exam考三小時，不知道大家考得怎麼樣，但是最後學期成績平均82，總結來說應該算是扎實甜吧。

## 體育課程

### 桌球初級

* 課號：PE2074
* 授課教師：王傑賢
* 學分數：1
* 等第：A+
* 甜度：7/10
* Loading：2/10
* 推薦程度：4/10

唯一空著的禮拜二下午就只好拿來抽體育課，幸運的是剛好第一抽抽學生證（男女各抽六個）就抽到了，一起來抽的撞董也有中，非常幸運。結果還是大意了，想說體育課有中就好，結果忘記看課程評價就被小雷到:cry:。

教的基本上就是基本的正手、反手、正反手、反手切球跟發球。上課的時候都很輕鬆，分四個人一組，剛好有都是資工系的四個人一組，還剛好兩個左撇子兩個右撇子。傑賢會先自己示範一次，然後請同學上來示範，最後放大家去練習，過大概半小時到一小時再叫大家回來教下一個技術，上課風格也還算幽默，會跟大家小聊一下，很愛不知道為什麼就請人喝星八克。雖然教得很簡單，但是期末非常刁鑽，正手反手對打兩分鐘來回120下才滿分，正反手要50回（左右來回各一次算一回）滿分，然後發球要發到只有兩個球排圍起來的角落連續五球。考完期末之後，到ntu course回顧其他人的課程評價才發現我早該知道他考試很刁鑽了。不過最後還是有拿到A+，同組的應該也都有，就給他過好了。

成績計算方式除了以上，還有分組比賽跟筆試。分組比賽就是傑賢會要你當社牛到處找人比賽，然後一直比直到贏了八場，就可以拿到滿分。如果不太會打也沒關係，可以去找那種已經八場的人比，通常都願意故意輸給你讓給你場數。筆試的部份也是蠻神秘的，事實上光是體育課可以考筆試本身就夠神秘了。他在群組傳了一份考古題，然後我直到考試當天的中午才發現要考筆試，所以就只好邊吃飯邊開始背考古，考試前十分鐘還在教室外面默寫…。題目除了後半段都跟考古題一模一樣以外，前面有20分的是非題，題目也很莫名其妙，像什麼「一局桌球比賽，兩邊比數總和一定是奇數或偶數。」意義不明。

總之就是期末一堆問題，感覺是時間管理不太理想，但反正最後成績能看，我就不要嘴砲太多好了。