大二下修課心得(2025 Spring)

PixelCat31415
  • 共同必修
    • 〔1 學分〕 棒球中級 by 呂祐華
  • 系必修
    • 〔3 學分〕 作業系統 by 施吉昇
    • 〔3 學分〕 計算機結構 by 楊佳玲
  • 通識
    • 沒有通識 😭
  • 系選修
    • 〔3 學分〕 計算機圖形 by 歐陽明
    • 〔2 學分〕 進階網路管理與系統管理 by 蔡欣穆
  • 一般選修
    • 〔3 學分〕 日文二下 by 池田晶子
    • 〔3 學分〕 語言的邏輯分析 by 謝舒凱

有個印象是上學期過得水深火熱(林軒田 ML 和呂學一線代可能要負還蠻多責任?),所以這學期打定主意少修很多課,結果來看還蠻成功的。不過通識真的是越來越大的問題,現在學期結束又會忍不住想如果有多修一點通識是不是更好?

寫心得的時間點是暑假過超過一半,中間還隔了一個 Challenge,那三個禮拜整天睜開眼睛的時間都在想 Challenge 的事情。學期中的事情體感隔了好久好久,所以這篇心得裡面可能很多東西都被過度美化了也說不定。

共同必修

〔1 學分〕 棒球中級 by 呂祐華

想說要選個體育課所以暴抽不少射箭之類的看起來酷酷的體育課,結果沒射到箭,還是回去打棒球了。修過兩次棒球感覺體育課好像還是應該有創意一點,去修射箭之類的奇怪一點的項目,修棒球課對我來說其實有點小無聊,大概只有「我每個禮拜有在運動」的價值。

棒中沒什麼記憶點,就是每個禮拜乖乖點名出現打棒球,有時候在紅土球場,有時候下雨在體育館裡面打樂樂棒球。跟棒初的差別在大家都還蠻會打的,分組賽的時候有感覺到是有競技水準存在的,至少大家打發球機都有個正常的擊球率。我號稱國小和高中打過一點點,不過那都是歷史故事了,現在我就是個每天不出門的宅,體能和球技差不多都是忽略不計,所以好像也沒有特別厲害的事情可以做,每次去當小邊緣。

之後想修的怪體育可能有射箭,正常一點的話可能是排球之類的,總之是不考慮再修第三次棒球。

系必修

〔3 學分〕 作業系統 by 施吉昇

我覺得作業系統是到目前為止最沒學到什麼的必修課。課程內容很多都跟系統程式設計高度重疊,有一種為什麼我要再聽一次的感覺。之前沒教過的部份大半都比較瑣碎,內容其實也不多,我看上課錄影的時候甚至可以常態開三倍速,讓人覺得去上課是在浪費時間。現在再看一次課程內容我覺得新東西大概真的只有 virtual memory 和 scheduling,但是他就教教 virtual memory 幾種 replacement policy 之類的,教教幾種 scheduling,我有點不知道我都學到了什麼,想不懂教授的教學目標、或是把作業系統當一門必修課的目的到底是什麼?

作業的話以前每年都在被罵,不過今年(被罵怕了?)出現幾個有為助教把作業二和四給重出了。雖然作業二的時候有點公告發太多,不過整體來說品質不糟,而且看得出來這個助教花很多力氣在這份作業上,再加上他是掃蕩以前最可怕的作業二的勇者所以我對他評價是相當高的;作業四要實做 symbolic link 是我最喜歡的一份作業,沒有出大包之外我覺得真的有在 trace code 的時候學到 file system 是怎麼實做的(有人說他的 spec 有很多沒寫到的情況,可能我剛好都沒踩到才覺得沒出包);作業零和一中規中矩的樣子;只有作業三的助教怪怪的所以有點奇怪,我直接下定決心不想跟他吵任何一架,反正我分數很多,最後被扣了一點點也沒怎樣。比較好笑的是作業零的時候我 makefile 忘了刪一行 debug code 直接吃零分,還好結果論沒有什麼差。

考試比較多要你背名詞解釋(不小心聯想到國中背註釋了 💩)或是用手模擬一些 procedure(像是 scheduling 或 page replacement),反正就是很無聊。系統程式設計的時候還要想一想程式要怎麼寫,作業系統就是一個沒有任何創意的文科背書比賽,所以也沒什麼心得可言。

現在要寫心得的時候想一想,作業系統整個就是令人無言,沒花我很多時間或力氣,我也沒學到什麼特別的東西,如果不是要畢業的話我絕對不想修這種課。(不過搞不好明年修完人工智慧導論就會有更浪費時間的課出現了

〔3 學分〕 計算機結構 by 楊佳玲

這門課我是修得相當開心,現在計算機結構和演算法設計與分析並列我最喜歡的必修!

一句話總結計結的話大概是在教你怎麼造一顆 CPU。前面先講組合語言和 ISA,然後是一個 clock cycle 跑一個指令的 single cycle CPU,然後是 pipeline,最後是 memory hierarchy(cache 和 virtual memory),可能還稍微講到一點點 multi-processor。同時計結會一直跟你討論怎麼 benchmarking 和討論 evaluation metrics,讓你知道一顆好的 CPU 可以是比較快、比較省電、比較便宜之類的,和其中的取捨。

計結的上課模式是課前給你看影片,上課時間有一半放小練習給大家分組討論,然後有一兩題的小考。這種模式我還蠻喜歡的,課前影片可以開快一點(反正其他課像 OS 也是課後看影片,一樣意思)之外,對上課內容有實際例子也比較能知道上這堂課是要我會什麼。整個學期有五次作業,前兩次的組合語言我覺得真的有點太簡單了,該上點強度;後三次作業是用 verilog 真的寫一個 5-stage pipelined CPU 出來。作業內容高度對齊上課內容,光是這點就先贏很多必修課了;而且寫一個 CPU 要考慮的整體架構和各種細節有讓我覺得我有在使用大腦,寫完之後我還覺得我對 verilog 更了解了。作業好像沿用了很多年所以也沒什麼出包的機會,我寫作業寫得還蠻開心的。

不過計結比較討厭的地方是考試題目有點多細節,雖然難度不高,但是喜歡要你細心發現或細心記住一些小地方。像是期中考的時候,我錯一題沒考慮到 RISC-V 裡面 pseudo instruction li 其實是兩個 instruction,好像因為這樣被扣了六分吧。不過某種程度上也覺得計結好像就是細節這麼多,那也沒辦法。

整體來說我覺得最喜歡計結的地方,除了我可能本來就比較喜歡這些東西以外,還有感覺計結的教授真的知道他在幹嘛、他想教給我們什麼,而且也確實的讓我有思考學習,然後學會課程裡面的內容。

稍微暴言一下的話,我寧可把作業系統刪掉然後讓大家大二下都來修計結。聽說另外一班的洪世灝的計結會上課教一點點考試出超爆難,感覺有一點點點想體驗看看,不過可能來不及了 💤

通識

沒有通識 💤,哪天通識一定會變成我畢業的最大障礙。

我上學期是這樣說的。這學期還是沒有通識,我因為通識而畢不了業、或是我因為通識而被迫放棄其他很想做的事情之類的未來,有點越來越有可能發生了。總覺得有點焦慮,但是每次都還是「我想修這個這個」「通識好像都沒有特別特別有興趣耶」「啊沒時間修通識了,算了」。

截至目前為止我的通識還是只有修得沒有很喜歡的普通心理學三學分,再想想要去哪裡湊剩下的 12 學分和兩個領域。

系選修

〔3 學分〕 計算機圖形 by 歐陽明

小時候一直有一個願望是學會用電腦寫 3D 遊戲一類的東西,所以去年聽說計算機圖形就有點想修。這門課也確實會教你像怎麼做透視變換、一般的 transformation、怎麼表達曲線之類的小技能,還有 shading(reflection model)、ray tracing 和 radiosity 的概念,是有不少內容的。只是課堂內講的都比較淺,實際的數學細節、實做方式都還是要自己想辦法。

這門課的 loading 算是很輕。上課教授常常在講古(兼炫耀展示他以前跟各方圖學大學者的合照),實質內容也沒有很多,所以可以比較輕鬆的聽聽。作業有一份(下圖),是要用 WebGL 實做基本的透視、平移、旋轉之類的各種變換,不過他的 sample code 整個是二十年前的遺跡,我聽說的每個人都把他整個自己重寫了。有一次期考,就考前半學期上課教的那些,不過他開放除了網路之外的 open anything 是真的有點玄幻,有點看得出來教授用盡全力不想當人(??)。

計圖最大的 loading 來自 final project(其實除了 final project 以外都沒有 loading)。final project 要自己選題目,我和王淇一組選狹義相對論下的光線追蹤,最後我們花了一個月寫出下面這個東西,可以觀察 length contraction 和光的都卜勒效應等等近光速才會出現的現象。不過有一說一的說,我覺得我從頭到尾做的事情就是去亂抄猛抄 網路上的光線追蹤 tutorial,真正的神妙物理計算都是王淇單手寫完的,有點抱歉之外有這麼扛的隊友實在太幸運了。做這個 project 相當愉快,大概是我第一次用 C++ 做有點規模的東西,學會用以前一直只有聽過的 OpenGL compute shader 和學會寫 GLSL,也是有不少收穫。

不過有點尷尬的是以上說我學到什麼什麼都跟上課沒有太多關係。我覺得這門課就是入門導論性質,要會更多的話果然都還是要靠其他網路資源。

延伸閱讀:牙牙學 Vulkan(一)用七百行畫一個三角形(偷偷廣告一下 😋)

〔2 學分〕 進階網路管理與系統管理 by 蔡欣穆

NASA 三階。今年三階是要用 slurm 架一個 HPC cluster,好像跟去年一樣。我是 proxmox 組負責把每一台實體機灌好 proxmox 給其他組放 VM 上去,不過實際上這件事情有一半 PM 幫我們做了。我們的 PM 呂承諺真的是 GOAT,至少我以門外漢視角覺得他根本是系統管理專家,好像什麼都知道,有好多工作可能本來該我們做的,他變一下魔法就全部搞定。我還真想不起來我們都做了什麼事,我投入的時間也是只比零多一點。只是蔡欣穆好像對我們特別好,或是因為我們組真的沒什麼事情該做,期中期末 demo 的時候完全不嗆我們一句,對比其他組被噴我只覺得我們何德何能,被蔡欣穆輕輕放下。給我 A+ 完全只證明這門課的分數沒有半丁點參考價值。

其實我本來沒有預期三階這麼涼的,想說「proxmox 組看起來是不是很有趣啊」就選了,再次證明我對系統管理一無所知。不過後來覺得這樣也很好,我對系統管理是真的提不起興趣,做 NASA 相關的事情的時候只想我什麼時候可以下班閃人,以後的 NASA 組長我一定逮到機會就要落跑。

我覺得 NASA 一階這門課教你管自己的電腦之類的一般技能是相當有用的,只是後面要進去 NASA 幫系上管那些東西還是要再想想,至少我現在確定我是沒什麼興趣。

一般選修

〔3 學分〕 日文二下 by 池田晶子

關於日文二下有點沒什麼心得,因為跟日文一上下基本是一樣的。池田老師的課就是長那個樣子,我覺得相當適合我。比較不一樣的只有期末要兩人一組拍影片唸故事,我整間教室沒認識一個人只好跟隔壁亂找,還蠻幸運找到一個不搞事情的正常人,順利下莊。

日文二感覺是有比日文一難一些,不過就一些,這門課還是沒有花我很多力氣。我覺得我學日文還是主要靠平常到處接觸,像是看くさあん和渋川難波的直播或影片,或是看動畫嘗試聽懂台詞,可能都會比較實際的提高日文理解度。我現在日文力的瓶頸大概是都不背單字,考試單字靠短期記憶,如果不下定決心去認真背的話可能字彙量起不來。不過我沒有特別提高日文實力的需求,也沒有要考檢定之類的,現在這樣隨便看看好像也不錯。

反正下學期就繼續修日文三,之前偷看別人修課的講義好像到日文三就會開始超出我會的日文的範圍了。因為實在是太多人愛劉沅華,所以也許會去嘗試修他的日文三也說不定。

〔3 學分〕 語言的邏輯分析 by 謝舒凱

語奧課(?)。這門課的老師自己就跟台灣語奧有關係,上課作業和期中考都是語奧題,我覺得相當好玩。不過他上課內容我有印象的有點少(對不起),大概是科普一些語言學知識之類的。現在想一想我上課好像大部分時間都沒在上課(真的對不起 🙇),對我來說這門課可能是每個禮拜去聽酷酷語言學小知識,做幾題語奧,然後把小知識忘光,可能有點糟糕也沒什麼 takeaway,頂多算修開心的。

期末分組 final project 的時候我們組做基於 shavian 文字的語奧題。詹子慶真的是個會語言學的,知道不少酷東西,shavian 這個主題也是他提的。我在題目連 prototype 都沒有的時候就被全部暴雷,所以設計題目和測試的那一段都沒我的事情,我就是個去負責寫 report 的語言模型。不過我還是覺得看他們卷出一題完整又有趣的語奧題也是還蠻愉快的。

不過期中考的時候因為我考試策略大失敗,加上我是真不會語奧,期中考成績有點可悲(看起來助教已經很努力給我高分了但是 🫠),最後這門課變成我第二門沒 A+ 的課,所以我就探掉了,所以這門課同時是我唯一開探索的課。現在覺得我探索開太少了,應該去亂修瘋一點的課然後探掉的,不過好像來不及了。

後話

這學期一開始修少一點課的計畫算是有達成了,我覺得每一門我想花時間的課都有空間好好放了多一點力氣,像是計算機圖形或計算機結構。某些實在是沒有很想理他的課也沒有花我太多力氣,像是作業系統和 NASA 三階。整體來說是還蠻愉快的。

未來的計畫?

現在冷靜的一想,我在資工系讀兩年了,我到底學到什麼了?我大概有資格說我花還蠻多力氣在修課,但是翻開修課紀錄,我修過的所有課真的都只能說是小常識。越來越有一種焦慮是別人都會 LLM、會 RL,我還是沒有類似的比較深入的專業領域知識的經驗;你現在問我我懂不懂機器學習、懂不懂平行計算、懂不懂 GPU 架構、有沒有任何實務經驗,我一個字都答不出來;但是再回想一下又不知道到底哪裡有辦法 done differently。

總覺得照這個 pace 發展下去總有一天會變沒有任何智慧的碼農,跟佃農一樣做最枯燥的事情,某天一夜之間被耕耘機埋葬。

畢業之後想做什麼?在有辦法回答這個問題之前可能要先知道接下來的兩年我其實想要做什麼?搞不好有專題、實習、各種看起來有趣的課(包括但不限於平行程式設計、密碼學軟體工程、編譯程式設計、解鎖動物的語言、…),然後我選了其中的一些,半年後我還是要再問一次「所以我都學了什麼,還不是花一堆時間去學早就有八千萬人會的東西」。

單純的寫下我此刻所想,我也知道寫這些是不會解決任何問題的。