大二上心得
本文最後更新於:2025年1月23日 晚上
這學期還蠻神奇的,索性來寫個心得
課業
這學期原本點了 23 學分,後來退了兩門課:
- 硬體實驗與設計 - 李濬屹 (CS 210401, 3)
線性代數 - 李哲榮(CS 233401, 3)- 資料結構 - 沈之涯 (CS 235101, 3)
- 獨立研究一 (CS 390500, 2)
- 平行程式 - 周志遠 (CS 542200, 3)
- 進階高效能計算叢集電腦實務 - 周志遠 (CS 543400, 3)
計算機網路概論 - 徐正忻 (EECS302001, 3)- 重量訓練 - 邱晨然 (PE 205063, 0)
- 計算機系統管理 - 蔡孟勳(交大, 3)
硬體實驗與設計 - 李濬屹
配分
- 12x Lab: 40%
- 6x Basic lab: 10%
- 6x Advanced lab: 30%
- Final Project: 20%
- Midterm Exam: 20%
- Final Exam: 20%
心得
跟課名一樣,真的很硬。整堂課需要應用上一個學期邏輯設計所學,利用 Verilog 這個硬體描述語言\
來設計硬體,並將設計好的電路燒到 FPGA 上面。
Lab 總共有六個單元:
- Gate-Level Verilog
- Advanced Gate-Level Verilog
- Sequential Circuits
- Finite State Machines(期中考範圍到這)
- Keyboard and Audio Modules
- Peripheral Components: VGA, Mouse, and Dual FPGA(期末考範圍到這)
每次 Lab 都分成 Basic 跟 Advanced:
Basic 基本上就是在上機教室依照所給的簡報實作就可以了,通常都能夠拿滿。
Advanced 則是兩人一組,通常會有 4 ~ 5 題並包含一個 FPGA 題,前面幾題會以 Verilog 題目為主,提交上去後助教會使用 testbench 測試你的程式碼輸出的波形圖是不是跟答案一樣;而 FPGA 題則是要在 FPGA 上實現某些功能(例如開關、按鈕、LED 的互動等等)
每次 Lab 跟考試其實分數都挺慘烈的,所以會公布三個基本的調分方案,並要求在第一次期中考成績出來後選擇要哪一種,大部分人都會穩穩選擇第一種,但也有些人覺得他的期末考會很高/低分,而選擇其他方案來當賭狗,而我則是選第一種:
- Midterm += (Lab5 20% + Lab6 30%) / 100 * (100 - Midterm)
- Final -> 15%, Midterm -> 30%
- Midterm -> 30%, Final -> 15%
每次考試的題目量跟一次 Advanced Lab 差不多,通常 FPGA 題會是比較可做的,每次考試平均都差不多三四十分,所以最後還會再調分。
這門課需要花費大量的時間練習與寫作業、報告,我最久一個禮拜花了 4、50 個小時在寫 Verilog 跟 LaTeX,不過其實蠻好玩的,學到很多東西,可惜教授跑去台大了,今年是最後一次開。
結果
- Basic Lab: 全滿
- Advanced Lab: 66, 100.5, 60, 79.35, 96, 109
- Midterm Exam: 36
- Advanced Exam: 100
- Final Project: 88.37
- 基礎調分方案加分:5.9
- 期末調分:7.5
最後成績:97/A+,T 分數 66.10,百分制排名 5/69
線性代數 - 李哲榮
期中考日期把 10/7 看成 1017,考試當天才發現要考試,所以就二退了。
資料結構 - 沈之涯 (CS 235101, 3)
配分
- Coding Assignments: 20%
- Coding Quiz: 20%
- Midterm Exam: 20%
- Final Exam: 20%
- In-class Quiz: 5%
- Final Project: 15%
心得
作業通常都很難,沒有相關基礎的會比較難寫出來,但是上機都蠻簡單的,而且拿到一個測資就有很多分數。
期中考大概考前一兩天把所有簡報讀過一次。考試會有很多題目,每次都差點寫不完。
Final Project 要寫一個論文搜尋系統,基本上就是在寫 Trie,有效能分。所以我把 Final Project 寫成平行程式,最後只有 Report 被扣一分,拿 99。
結果
- Coding Assignments: 全滿
- Coding Quiz: 20
- Midterm: 64
- Final: 80
- In-class Quiz: 有一次出國沒考到,除了那次之外都滿分,不知道最後到底算幾分
- Final Project: 99
最後成績:91.1/A+,T 分數 60.31,等地制排名 1/89
獨立研究一
跟著周百祥老師做之前特選生的研究計劃,主要是跟 Python 課程的出題指引有關。
結果:A+,T 分數 50,等第制排名 1/7
平行程式 - 周志遠
配分
- Homework: 80%
- Parallel Odd-Even Transposition Sort (MPI): 20%
- Mandelbort Set (MPI & OpenMP): 20%
- All-Pairs Shortest Path (GPU): 20%
- FlashAttention Implementation (GPU): 10%
- Network Benchmark (Ibverbs & UCX): 10%
- Labs: 6%
- Pixels in circle
- Approximate pixels
- CUDA, OpenACC, HIPCUDA-Advance: Memory Optimization
- FlashAttention
- Nvidia DLI
- Final Project: 15%
心得
因為平行程式很好玩,所以來修了這門課,好課大推。
整門課基本就是寫各種 CPU 跟 GPU 的平行程式,每次作業都會給 Sequential 的 code,我們只要把他們寫成平行的版本就好。
Lab 有一個禮拜的時間可以寫,基本上只要有 AC 就會拿到分數。
作業的部分會有數週可以寫,除了 AC 之外也會要求效能,分數會包含正確率、效能、報告以及 demo 等等。最後一個作業比較特別的是要去 trace UCX 的 code 然後修改並回答問題。
Final Project 則是自己選一個主題,然後優化他的平行效能或是把原本不平行的部分平行化,我是選了一個圖論的題目做。
很智障的是我的 Lab2 優化到全班最快,結果我忘記交了 = =,還好最後沒有影響到成績。
結果
- Lab: 100, X, 100, X, 100, 100
- Homework: 95.41, 97.3, 96.75, 80, 77.5
- Final Project: 87
結果:91/A+,T 分數 56.49,等第制排名 1/105
A+ 38.1% (40人)
A 28.6% (30人)
A- 14.3% (15人)
B+ 6.7% (7人)
B 4.8% (5人)
B- 3.8% (4人)
C- 1.% (1人)
D 1.% (1人)
F 1.9% (2人)
進階高效能計算叢集電腦實務 - 周志遠
只有超算隊員才能修的課,其實就是選手培訓跟比賽
結果:A+,T 分數 50,等地制排名 1/14
計算機網路概論 - 徐正忻
第一次期中考發現考一堆計算題,不是我要學的所以就退了。
重量訓練 - 邱晨然
就是重訓,期中考抽考器材跟使用到的肌群,期末考考硬舉
計算機系統管理 - 蔡孟勳
配分
- Homework: 70%
- Midterm Exam: 15%
- Final Exam: 15%
心得
交大著名的 SA,因為高三有做過教授在成大開的 SA,作業都拿了滿分所以就把交大的修一修。
幾次作業的主題是:
- Install FreeBSD/Ubuntu & WireGuard
- Shell script & System Info
- File Server
- Web Service
基本上就是在架一些服務之類的,完整的介紹可以參考課程網站:https://nasa.cs.nycu.edu.tw/sa/2024/,大家都說要花幾十個小時寫,之前看到 Threads 上看到有 80 個小時拿不到分數,但我寫起來是沒那麼誇張,花個幾天的一些時間寫就可以拿到滿分了。
期考都只是考很簡單的東西,畢竟這堂課的重點是作業,而且作業基本上只有會寫/不會寫,會寫幾乎都會 100,所以代表期考可以被扣 66 分還是有 A+,甜課大推。
結果
- Homework: 100, 105, 100, 117
- Midterm: 82
- Final: 52
結果:A+
總成績
GPA: 4.3
T 分數: 57.05
其他
待更新