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

shanihsu(許湘苡)

簡介

  • 國立成功大學 資訊工程學系 111級 (2018-)
  • GitHub: shanihsu
  • HackMD: shani

聯絡資訊

email: shani21516344@gmail.com

2021 Linux 核心設計 春季班 自我評量

作業及筆記

lab0

quiz2A - list

所見所聞心得

當初想上這門課主要是想把過去不足的基礎重新打好,把以前薄弱的程式基礎全部砍掉重練,沒想到上了一學期的課,學到的遠遠大於這些。

這堂課學到的不只是 Linux Kernel ,更多的是學習態度跟方法,以前的作業在乎的只是期限內交出一個可以滿分的作業,完全沒有考慮到程式的正確性及可讀性,作業繳交結束後,也不會再去深入探討作業內容,甚至重做。

但這堂課特別的地方在於,每份作業都沒有寫完的一天,每個細節都能不斷精進深入探討,拋開以往做作業的心態,才發現以前所做的一切對於學習不過就是走馬看花。要懂一個知識,需要從最根本的地方開始探討,並身入其境用心體會,才能從中真正懂這些知識。

在課程中老師也常常會點同學起來回答問題,每次上課就像在激勵自己,周遭的人是多麼厲害,更了解到自己的不足,會不斷地思考,明明環境相同,別人怎麼總能學這麼快。在老師的問答過程中,也理解到,學會表達很重要,否則再怎麼厲害都是空談。

在這個學期一直覺得自己跟別人程度落差很大,也常懷疑自己到底有沒有進步,但現在回頭看看,這學期學到的東西真的很多,不管是最基礎的指標、 linked list ,或是每週小考培養出來的閱讀程式碼速度,寫共筆時的表達能力,還是使用 gnuplot 作圖、 gdb 除錯,利用 valgrind 檢查記憶體使用情況,這些都是半年前的我不會的,也了解到自己比想像中弱很多,只有徹徹底底的改變自己的學習態度才會進步。

自我評量分數 (1 到 10 分)

我給自己 6 分。

學期初花了很多時間在學習指標跟 linked list ,重構之前沒打好的基礎,也完成 lab0 跟 quiz2A ,不過學期中開始因為其他科的期中還有系上的專題展忙不過來,所以只有每個禮拜的課程以及隨堂考有跟上,這部份是我該檢討的地方。直到期末專題才又開始投入時間跟精神重新做 quiz2A ,深深了解到自己還有很多的地方可以繼續努力。

  • 知道如何對 linked list 進行 merge sort 嗎?真實世界中的應用場景為何?

以 2:1 的比例進行 merge sort ,如果有 3 * 2k 個元素均在 cache 中,則不斷將兩個 size 同為 2k 的 list 合併成一個 size 2k+1 的 list ,這個新的 list 跟剩下的 2k 元素再做合併,可避免 cache thrashing 。

  • 本學期課程內容中,讓你印象最深刻、顛覆過往認知的部分是什麼?請舉例說明

這學期我有一半以上的時間都在做 quiz2A ,一開始不懂老師要我重做的用意,後來才慢慢明白,在重做的過程,可以不斷的自我學習,會很明顯看到過去的自己有多不足,也可以感受到自己真的有在進步,我想這就是老師說的跟自己比吧。