nosba0957(吳昱輝)
簡介
Linux 核心設計/實作 (Spring 2024) 自我評量
成果發表和貢獻
1 分。 並未對教材進行貢獻。
作業/隨堂測驗
7 分
在 Homework1 和 Homework2 學習到 linux 核心是如何使用 list API,container_of。學習如何撰寫出好的 commit message。研讀 linux 核心程式碼 list_sort.c,學習到排序演算法並不是單純背誦時間複雜度,是要將背後數學證明計算出來互相比較,甚至針對 cache 影響有對應的方式。在 Homework1 比較不同排序演算法效能時,看到 fennecJ 同學分享他的測試結果,學習到每個演算法有適合的情境,測試資料的大小也並非隨意指定。Homework5,Homework6 學習將論文、文章中的數學證明重新跟著證明一次,嘗試透過 bitwise 操作實作不依賴除法運算的 mod 3,mod 9。
期末專題
7 分
- Linux 核心專題: shecc HackMD
在期末專題學習到編譯器如何解析輸入的程式建立 SSA,和施行最佳化,其中我實作任務是消除 shecc self-host 失敗的問題,找到原因是 logical-and 實作錯誤。原本以為能快速修改成功,但經過其他貢獻者提出的意見,發現我連 C99 規格書都沒看仔細,也沒有謹慎思考到特殊的例子,所以又重新修正。但後面重新修正時發現要從根本開始修改,而我急著想寫程式(老師在第 19 週提示我們常犯的錯誤),反而最後花了更多時間才修改好。所以除了編譯器的知識,也學習到老師說工程師有 80% 的時間在分析,只有 20% 用來寫程式。
與授課教師的互動
8 分
- 2024-5-1 一對一討論。 討論期末專題,老師首先詢問我對 SSA 的概念,SSA 使用在哪些編譯器最佳化上。 並且也告訴我為何要會問問題
- 問問題可以讓你和專業的人對話。
- 見證自己成長
所見所聞所感
10 分
從第五週的現場實體 code review 讓我體會到什麼是幻滅,先前做的作業 1 完全沒有注意細節,只想趕快撰寫程式,然後達到 100 分,卻對老師問的任何問題都沒辦法回答,開始體會到何謂重視細節,並且誠實面對自己的不足。但我也在看到我的不足後開始退縮,後面撰寫開發紀錄的時候會開始害怕自己錯誤,害怕被批評,最後不敢寫。後來看完〈因為自動飲料機而延畢的那一年〉,看見別人就算遇到失敗和挫折但也繼續下去,我開始誠實面對自己的情緒,並希望能效仿強者不怕批評的心態。所以在後面的作業我開始嘗試將自己理解的知識寫在開發紀錄上,就算被老師批評也是直接面對而不是逃避錯誤。而期末專題和上面所述一樣,學習到不能心急的想趕快寫程式,工程師最常做的是分析而不是寫程式。 在這堂課中,不僅學習到知識,學習到更多的是面對資訊科技難題的心態,面對困難和挫折的強健心理。
自我評分
- GEOMEAN: \(\sqrt[5]{1 \times 7 \times 7 \times 8 \times 10} = 5.2319\)
- 方案 B: 1 + floor(GEOMEAN) = 1 + 5 = 6