--- format: markdown categories: User toc: yes title: shanihsu(許湘苡) ... ## 簡介 * 國立成功大學 資訊工程學系 111級 (2018-) * GitHub: [`shanihsu`](https://github.com/shanihsu) * HackMD: [`shani`](https://hackmd.io/@shani) ## 聯絡資訊 email: ``shani21516344@gmail.com`` ## 2021 Linux 核心設計 春季班 自我評量 ### 作業及筆記 [lab0](https://hackmd.io/@shani/ByQfl_b7u) [quiz2A - list](https://hackmd.io/@shani/r16CJIjXu) ### 所見所聞心得 當初想上這門課主要是想把過去不足的基礎重新打好,把以前薄弱的程式基礎全部砍掉重練,沒想到上了一學期的課,學到的遠遠大於這些。 這堂課學到的不只是 Linux Kernel ,更多的是學習態度跟方法,以前的作業在乎的只是期限內交出一個可以滿分的作業,完全沒有考慮到程式的正確性及可讀性,作業繳交結束後,也不會再去深入探討作業內容,甚至重做。 但這堂課特別的地方在於,每份作業都沒有寫完的一天,每個細節都能不斷精進深入探討,拋開以往做作業的心態,才發現以前所做的一切對於學習不過就是走馬看花。要懂一個知識,需要從最根本的地方開始探討,並身入其境用心體會,才能從中真正懂這些知識。 在課程中老師也常常會點同學起來回答問題,每次上課就像在激勵自己,周遭的人是多麼厲害,更了解到自己的不足,會不斷地思考,明明環境相同,別人怎麼總能學這麼快。在老師的問答過程中,也理解到,學會表達很重要,否則再怎麼厲害都是空談。 在這個學期一直覺得自己跟別人程度落差很大,也常懷疑自己到底有沒有進步,但現在回頭看看,這學期學到的東西真的很多,不管是最基礎的指標、 linked list ,或是每週小考培養出來的閱讀程式碼速度,寫共筆時的表達能力,還是使用 gnuplot 作圖、 gdb 除錯,利用 valgrind 檢查記憶體使用情況,這些都是半年前的我不會的,也了解到自己比想像中弱很多,只有徹徹底底的改變自己的學習態度才會進步。 ### 自我評量分數 (1 到 10 分) 我給自己 6 分。 學期初花了很多時間在學習指標跟 linked list ,重構之前沒打好的基礎,也完成 lab0 跟 quiz2A ,不過學期中開始因為其他科的期中還有系上的專題展忙不過來,所以只有每個禮拜的課程以及隨堂考有跟上,這部份是我該檢討的地方。直到期末專題才又開始投入時間跟精神重新做 quiz2A ,深深了解到自己還有很多的地方可以繼續努力。 * 知道如何對 linked list 進行 merge sort 嗎?真實世界中的應用場景為何? 以 2:1 的比例進行 merge sort ,如果有 3 * 2^k^ 個元素均在 cache 中,則不斷將兩個 size 同為 2^k^ 的 list 合併成一個 size 2^k+1^ 的 list ,這個新的 list 跟剩下的 2^k^ 元素再做合併,可避免 cache thrashing 。 * 本學期課程內容中,讓你印象最深刻、顛覆過往認知的部分是什麼?請舉例說明 這學期我有一半以上的時間都在做 quiz2A ,一開始不懂老師要我重做的用意,後來才慢慢明白,在重做的過程,可以不斷的自我學習,會很明顯看到過去的自己有多不足,也可以感受到自己真的有在進步,我想這就是老師說的跟自己比吧。