# Linux 核心實作課程之「每月學習回顧信件」範本 ## 緣起 本課程預期佔用研究生大量時間,於是授課教師有責任揭露學習狀況給實驗室。研究生需要在二、三、四,五、六月底發送當月學習回顧信件,提供給實驗室指導教授 (而非本課程授課教師),談及自身學習狀況及對研究主題的可能助益。當月若對 Linux 核心提交程式碼貢獻,則免發信給指導教授 (但仍該通知授課教師)。 ## 學習回顧信件發送方式 1. 標題:「⬡⬡⬡ 於 Linux 核心實作課程的二月份學習回顧」,其中「⬡⬡⬡」是學員的法定名稱。 2. 收件人指定為「實驗室指導教授」,要一併指定副本 (即 ==Cc.==,不是 [Bcc](https://en.wikipedia.org/wiki/Blind_carbon_copy)) 為授課教師 `黃敬群 <jserv@ccns.ncku.edu.tw>`,千萬不要忽略後者,否則授課教師無從得知學員是否確實進行學習回顧。 3. 內文應該包含針對教材、隨堂測驗、作業,以及師生互動等教學活動的所見所聞所感,可善用 ChatGPT 一類的工具潤飾,唯不該偏離事實。 ## 須知 * 你主動回報學習狀況給實驗室指導教授,本來好事一樁,沒必要在信件中寫上「打擾」或者「不好意思」的字樣。 * 授課教師在大學教書十餘年,見到不少學生在課堂表現不俗,但在面試場合卻無法清晰地闡述自己的成果和獨到的成就,從而錯過躋身一流資訊科技企業的機會。為此,有本項制度,讓學員藉由撰寫「每月學習回顧」的信件,跟實驗室指導教授互動,不僅清晰且明確說明自身在專業領域的成長,之後也準備跟科技公司的主管及早接觸。請認真看待每月學習回顧信件。 * 務必「誠實面對自己」,即使現階段自認沒學到東西,也誠實向指導教授稟報。 ## 每月學習回顧信件的範本 > :warning: 斟酌改寫符合自己書寫的風格,切勿直接複製貼上 ◇◇◇^實驗室指導教授的全名^ 教授您好, 學生 ⬡⬡⬡^學員的法定名稱^ 在本學期選修黃敬群老師開設於資訊工程所的「Linux 核心實作」課程,已投入可觀的時間,儘管實驗室目前的研究主題不與 Linux 核心直接相關,但我仍發現課程中對實驗室有益的議題,於是我以本信跟教授分享。 「Linux 核心實作」完全以開放原始碼技術建構課程所需的教材,不僅包含開發工具,也涵蓋適用於多人協作的開發模式,例如課程強調撰寫清晰好理解的 git commit message [1],起初我無法意會到這要求的精神,但這幾週觀摩授課教師準備的程式碼和學員們的創作後,我才理解如此規範對於協作的助益,我得以很快掌握程式碼變革 (revision) 之間的動機及考量因素,日後我投入實驗室的研究工作時,前述 git 版本控制系統和多人協作規範,預期可提升實驗室成員與我的開發透明度 (transparency)。由於課程在第一週就指定作業,而我也相當早就投入 [2],並藉由 GitHub 接受來自授課教師的程式碼審查 (code review) 意見,於是可及早調整程式碼的發展,免除閉門造車,這點應該對實驗室 --(自行發揮)--。 此外,「Linux 核心實作」的作業對於程式碼品質、執行效率、記憶體使用率,還有各式「品味」(good taste,呼應 Linus Torvalds 在 TED 訪談的用語) 等議題相當重視,我投入作業的過程中,最有印象的是藉由 AddressSanitizer 和 Valgrind 找出程式的記憶體錯誤,讓我想到,之前實驗室學長 ⍜◒◓^自行修改為跟你合作過的實驗室成員^ 在實驗室進度會議提到 ☆□○ 專案長時間執行時,會遇到顯著的記憶體洩漏問題,就可運用前述課程提到的方法來排除。 為了理解 Linux 核心原始程式碼,我參閱後者所參照的 3 篇論文,亦即〈Bottom-up Mergesort: A Detailed Analysis〉、〈The cost distribution of queue-mergesort, optimal mergesorts, and power-of-two rules〉,和〈Queue-Mergesort〉,才發現原來合併排序演算法在實作層面,有如此多的議題要考慮,尤其顧及平均和最差狀況下,降低對資料單元進行比較的次數,有大量的數學分析,而對照閱讀 Linux 核心原始程式碼的實作後,我更理解理論和實務是一體兩面,也印證 ◇◇◇^實驗室指導教授的全名^ 教授在指導實驗室成員的過程中,一直強調對論文閱讀和思考的重要。 目前我已閱讀 Linux 核心關於 linked list, hash table,以及 bitops 相關的原始程式碼,並試圖撰寫程式碼來使用 Linux 核心提供的 API,過程中,我想起 ☆□○^實驗室的計畫^ 專案的程式碼可進行改進,藉由 Linux 核心風格的 ---(自行發揮)---。我想,自己之所以可在短期內想到這些改進,應該就是我藉由大量閱讀和實踐,提升自身素養,從而對資訊系統有更好的掌握。 學生⬡⬡⬡^學員的法定名稱^ [1] 參見: [How to Write a Git Commit Message](https://cbea.ms/git-commit/) [2] 參見我的程式碼和開發紀錄,我連續 10 日都充分投入,新增和調整的程式碼行數超過 980 行,且確保每項變更都詳實紀錄,開發紀錄更是闡述程式碼便更後面的多項考慮因素。