# 2023q1 Homework5 (assessment) contributed by < `DokiDokiPB` > ## 從前四週的作業選出三題改進 #### lab0-c 自上課時有幾種方式追蹤程式碼,例如 - 使用 `ftrace`, `strace` 追蹤。第六週上課時提到的工具 - 使用統計手法查看。從 Dude, is my code constant time 論文中得知 $\rightarrow$ 需要改進的就是:目前處於有些輪廓的階段,學習怎麼用這些手法去追蹤程式碼 :::info 我的疑問: 撰寫 lab0-c 時,遇到新的問題,例如論文與 dudect ,自己沒什麼想法。 有些同學如 [willwillhi1](https://hackmd.io/@alanjian85/lab0-2023#%E6%94%B9%E9%80%B2-dudect-%E5%AF%A6%E4%BD%9C) 與 [yanjiew1](https://hackmd.io/@yanjiew/linux2023q1-lab0#%E7%9B%AE%E5%89%8D-lab0-c-%E5%85%A7-dudect-%E7%BC%BA%E9%99%B7) 有觀察出可以改進的地方,對於我自己卻很難學習到其思路 這真是不好解釋,例如其它同學可能有理解到一些開發態度、細節上的重視,反應在作業撰寫內容跟方向;我自己沒方向的時候是查看 2022 年前的同學筆記,依樣畫葫蘆。 ::: #### [quiz4](https://hackmd.io/@DokiDokiPB/linux2023q1-quiz4) red black tree - 從最基本的 RBT 開始撰寫與了解 - [第 7 週課堂問答簡記](https://hackmd.io/@sysprog/SyOhklg-3):留意 RBT 與 LLRBT 的差異 #### [quiz5](https://hackmd.io/@DokiDokiPB/linux2023q1-quiz5) 測驗 2 - 撰寫 --- ## 紀錄閱讀〈因為自動飲料機而延畢的那一年〉的啟發 這次撰寫 lab0-c 作業到停下來沒方向的時候,就會想為什麼修這堂課程、就會想放棄;之前都是透過旁聽的方式,堅持幾個禮拜就放棄了。這次,因為透過校際選課的關係選課,每當想放棄的時候,就會思考繳上去的學分費,而繼續撰寫程式碼。 之前旁聽,很多第一次知道的名詞動詞例如 `happen before` 很難了解;這次選修,受惠之前旁聽,也可能是心理因素作祟,在閱讀教材上快速許多。看影片、直播或是同學撰寫的筆記時,大概知道是從哪裡的教材。 --- 用 2022 年撰寫 fibonacci driver 做對比: - 在撰寫 2022 年 fibonacci driver 時會希望自己全程手寫盡量少參考 - 撰寫在 kernel space 的程式碼很難除錯 - 撰寫時會追求奇妙的細節,導致整體作業撰寫速度很慢 - 撰寫開發過程會去看別人怎麼寫,這很容易影響自己撰寫過程跟速度 對比這次 2023 年的 fibonaci driver: - 不會過度追求某些細節(之後再改進這些細節),在心理上推進自己撰寫作業過程。 `git commit` 寫錯訊息就寫錯、變數命名太隨便就隨便、不優雅程式碼就不優雅 - 撰寫通用在 user space 的程式碼以利除錯跟在新實作上量測。 - 有程式碼可以~~抄~~參考就先加速過程,例如撰寫程式碼會使用 `bn_to_string`,可以直接引用過去同學撰寫的程式碼 - 透過每天偷看別人寫到哪裡來提醒自己該開始做作業了(線上課程看不見同學的缺點),總之利用些方法推進自己一點點 ## 研讀給定的「課程教材」與 CS:APP 3/e - 在撰寫 lab0-c 時,其中有項作業要求是閱讀論文 Dude, is my code constant time,問題過程: - 閱讀完論文還是不知道論文能用來做什麼,完全不會統計 - 利用關鍵字上網找統計學教材,找到相關的教材後很快就了解論文的內容,但還是不會應用統計在作業上 - 在目前的進度中,紅黑樹有可預見的筆記撰寫內容,`Remove` 函式在對應不同的 2-3-4 樹與 2-3 樹 - 第三週的課程有提到 Rust,寒假的時候有花點時間按照 [Rust 教學](https://www.rust-lang.org/learn),多少用 Rust 寫 [LeetCode Easy 題目](https://leetcode.com/problems/add-binary/solutions/1324370/rust-solution/?q=Rust&orderBy=most_relevant) ### 目前構想、規劃 - 專注基礎功 - 學會統計手法 - RBT 撰寫筆記 - 學習記憶體配置 (alloc) - (第八週) Concurrency,應用到 Rust 上 ### 提問 在研究所課程中,我注意到教授或是老師的角色跟以往不同,學生需要自行搜尋資料(課程提供)、閱讀論文、撰寫報告,教授的教材跟作業有一點這種感覺。 我感覺這在 Linux 核心實作的課程中,不明顯但是又很重要的素養。 我自己寫作業時,很多時候覺得問題起源跟如何解決的思維,會幫助自己撰寫。有些時候觀摩其他同學的作業內容,有些可以了解脈落,有些很突然出現。 教授在上課的時候的那個鏡頭,讓我覺得有這樣的角色定位。 想請問教授在教學上,會是怎樣要求學生? --- [課堂問答簡記](https://hackmd.io/@sysprog/SyOhklg-3#DokiDokiPB)是星期二的問答?星期四線上課程完全不會見到這個問答