分享到plurk 分享到twitter 分享到facebook

yenshipotato (蔡文賓)

簡介

2024 Linux 核心實作 自我評量

1. 成果發表和貢獻

Homework5 (assessment)我提出了教材中程式碼的問題,但授課教師的回覆是他是有意在教材中刻意更改正確的程式碼,此外我並沒能做出其他貢獻。

評分:5

2. 作業/隨堂測驗

我在作業中屢次掉隊,無法如期完成,但正如授課教師所言,「缺甚麼補甚麼」,這一教訓我時刻銘記。認知到缺陷並不容易,尤其是在撰寫作業的過程中,我時常發現自己知識上的不足。然而,通過不斷地閱讀教材並在實際操作中學習,我能夠感受到自己的進步,這種進步是前所未有的。

在觀察他人的作業以及接受同學的建議時,我深刻體會到程式設計能力的差異對於實際成果的影響。比如,在第一次作業中,我收到了來自同學 yenslife 的修改建議。通過理解這些建議,我才意識到自己在使用 list API 方面存在著不足。我的程式碼不僅可讀性差,而且在程式碼的重用性方面考慮不足。通過使用簡單函式調用取代冗長的程式碼,我才真正體會到了程式設計的精妙之處。

隨堂測驗部分,我參與了每一次的隨堂測驗,雖然有幾次是滿分,但在其他次測驗也有只對一題的情況,甚至第 12 週的隨堂測驗拿了 0 分,而這令我意識到我對於教材的理解還不夠透徹,以及快速閱讀程式碼的能力不夠熟練,這在未來面試時必然會成為缺點。不過也因為如此我才能認識自己的問題,能針對性地進行補強。

評分:9

3. 期末專題

期末專題的題目是位元運算的應用,任務內容包含重新作答第 7 週測驗題測驗 1 與測驗 2 以及第 9 週測驗題測驗 3 並涵蓋延伸問題,其中在第 7 週測驗題的部分,測驗 1 完成了解釋程式碼的延伸問題,測驗 2 解釋了部分程式碼 (第二個判別式沒有全部完成) ,以及在 Linux 核心原始程式碼找到相關的程式碼並設計實驗。第 9 週測驗 3 則是完成了包含解釋程式碼、尋找可改進之處與研讀 CMWQ 在內的 3 個延伸問題,惟沒能討論 CMWQ work stealing 的實作手法。

  • 觀摩其他學員的期末專題並提問

Linux 核心專題: 高性能網頁伺服器

評分:9

4. 與授課教師的互動

最有印象的問答是詢問授課教師是否刻意更改教材裡的程式碼,得到的是肯定的回覆,授課教師刻意更改教材裡的範例程式,在大型語言模型與生成式人工智慧大行其道的當今,抱有懷疑的視角審視每一件被認為是事實的敘述,透過實踐求解與理論證明,而不是單純的複製貼上,是格外重要的能力。

評分:8

5. 所見所聞所感

  • 閱讀〈因為自動飲料機而延畢的那一年〉的啟發

「你該學習的不是看到事情要完蛋了就去避免失敗,而是應該學習如何處理與承受失敗,你才能變得比以前更強大。」 〈因為自動飲料機而延畢的那一年(12)〉

害怕失敗,這種恐懼伴隨著教育植入廣大的莘莘學子,而不去嘗試就不會失敗似乎是大多數人面對失敗的百憂解,「想避免失敗」本身沒有問題,問題是「逃避」。恐懼是人類的生存本能,例如「害怕死亡」讓人類懂得避免危險以及促成醫療進步,但我們目前也只能延緩死亡的到來,同理,所有失敗都無法避免,但比起逃避,泰然面對、處理與承受失敗要更為實際。

「但這是他媽的真實的人生,熱血毫無用武之地。」 〈因為自動飲料機而延畢的那一年(12)〉

在這個故事的最後,作者的確做出了成品,做出了自動飲料機,而結局並不是申請專利、量產、發家致富,結局是把機器拆了送到倉庫,花了 14 個月、數以萬計的預算,仍然沒能成為倖存者,如果這是一個結果論的感想,那這就是一個沒有經濟價值,失敗的專案。但是,過程中,作者從一個對硬體設計、機械一竅不通的資工系學生,為了做出真的能用的成品,學了專案管理、硬體設計、機械結構設計,正因為不斷挫折以及在挫折中掙扎,才有辦法做出成品來。

  • 回顧自身在本課程的投入狀況

作業部分,我認為自己在每一個作業都沒有做到盡善盡美,因為光是閱讀教材就花費了大量的心力,每一週都花至少 15 小時在閱讀教材,但對於這龐大的教材量還遠遠不足。不過如果沒有閱讀教材鞏固基礎概念直接埋頭做作業,遇到問題再一個一個 google 或是問 ChatGPT ,而不是利用授課教師花了數年累積精練的教材,反而是捨近求遠。 隨堂測驗上,我參與了每一次 Linux 核心實作的隨堂測驗,儘管不是每一次都能取得滿分,但訓練在有限的時間內閱讀程式碼嘗試理解並填上缺空的部分,這對於資訊素養的養成是非常實用的訓練。

評分:9

6. 每月發給實驗室指導教授的學習回顧

  • 二月份學習回顧

日期:2024/03/04 19:01

回顧第一次作業,閱讀了論文《Dude, is my code constant time?》,並研究了該論文所提出的方法。我意識到檢測算法是否具有常數執行時間在實作層面上有著許多值得考慮的議題,而且不僅要獨立於執行設備與還要兼具方便使用和方便維護。通過對論文作者原始碼的對比閱讀,更加深了對理論和實踐的理解。閱讀了 Linux 核心相關的 linked list 和 bitops 等原始程式碼,並試圖使用 Linux 核心提供的 API 來撰寫程式碼。

  • 三月份學習回顧

日期:2024/04/04 15:20

回顧在第一次作業中需要實作 shuffle 演算法,並搭配統計方法驗證其之「亂度」,需要使用統計檢定來測試兩筆資料,在這次作業裡也需要去了解 entropy。

  • 四月份學習回顧

日期:2024/05/07 08:00

回顧第三、四週的測驗題。印象最為深刻的當屬在第三週的測驗二裡,需要使用 bitwise operation 實作不依賴除法指令的取餘函式,以減少運算成本,以在計算量龐大時可以確保結果正確,達到更少的執行時間。此外,在第五次作業裡授課教師指定閱讀了一篇文章,並要我們撰述閱後啟發。

  • 五月份學習回顧

日期:2024/06/27 12:55

這個月與授課教師進行了一對一面談,授課教師回答了我提出的問題,其中我認為最有印象的問題與回答是我詢問授課教師是否刻意更改教材裡的正確描述,得到的是肯定的回覆,授課教師刻意更改教材裡的範例程式,在大型語言模型與生成式人工智慧大行其道的當今,抱有懷疑的視角審視每一件被認為是事實的敘述,是格外重要的能力。

評分:10

計算方式

方案 B: 1 + floor(8.14325) = 9