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

User/cantfindagoodname

簡介

國立成功大學 資訊工程112 (2019 - )

Github: cantfindagoodname

期末專題

Linux 排程器研究

修課心得

最初會選課是因為自己覺得對 Linux 的了解僅限於基本的指令,原以為這堂課會介紹一些工具或是指導學生寫腳本,簡化平常寫程式的流程。在開學前一周老師最初發郵件公布課程大綱時才發現自己有多天真,預期在一個學期教完的課是在看不完的課程大綱中的兩個連接: 開發工具和規格標準GNU/Linux 開發工具,前者為C語言系列講座的引言,後者甚至沒有自己的講座影片,被標註為自主學習內容。

這堂課是非常神奇的一堂課,老師學期開始時有提到過說他會當作我們修課學生什麼都不懂,從頭開始教起。 因為老師會個別對學生的進度進行調整,再加上上課本體不在於實體上課( 雖然實體上課會和教材錄影有部分重疊 ),確實不同程度的學生都能參與課程,且都會有不太一樣的心得。不過提升的高度和上課的收穫會被自己的實力決定就是了。 礙於實力不足的原因,我在這堂課最大的收穫和 Linux 没有直接的關係。我這一堂課學到最有心得的反而是閱讀與書寫( 突然變成文科生了 )。

閱讀方面,我自己原本就蠻常會翻課本閱讀,不過上了課才發現自己沒有看過其他人寫的,「完整」的程式碼。我覺得這一點非常重要,雖然我自認有點遲才領會到這點,且關於這部分也沒有很多心得,不過閱讀別人的程式碼確實讓自己程式的寫法得到一定程度的升華,也讓我體會到 Github 強大之處。在這之前,就算撇開上課要求才寫的程式,我寒暑假寫的玩具也都只有在做基本的 CRUD,只要程式能夠運作就當作「完整」,別說讓強大 ( robust ) 的程式了,我的程式碼甚至連測試也沒有做,連隨堂測驗的程式都比不上。這堂課讓我體會到閱讀的重要性,以前我看過別人的程式碼,通過模仿參照他們的程式架構與技巧就自認已經會了。沒有通過 README 了解作者的思路。沒有通過 commit message 了解程式是如何一步步從「能執行」的程式變成「正確」「優雅」「可讀」的程式。更別說是通過論文了解作者是如何設計實驗證明自己的程式是「有益」「有效」「耐操」的。這也是讓我很懊悔的一點,明明這些應該都是些基本常識,我卻在這麼遲才因為這堂課才留意到。另外,我還有發現自己閱讀程式碼的速度有變快了( 會不會閱讀仔細還有待觀察 ),雖然這樣比較有點不公平,不過在學期剛開始時的 測驗3 的 8 題 當時給了近半小時我還沒能寫完,回顧課程時,差不多的時間內能夠相當有餘裕地寫完測驗( 11 題除外,有需要一些領域知識 )。

接着就是書寫的部分了,最初在寫共筆時只是隨心再寫,沒有經過思考就將程式碼貼上敘述,甚至在前幾次只得到老師給予 “Improve your writing” 評語,一度覺得有點挫折。之後通過閱讀文件一點點的去理解共筆上應該些什麼。雖然在書寫的部分還有待加強,不過至少目前不太會寫造着程式碼敘述的共筆了。

自我評量

自我評量我給自己 9 分。 雖然自己的表現不符合預期,不過我不認為自己有辦法投入更多時間,以自己的實力來說我不認為自己能夠表現得更好。 而這樣的表現,就算非常保守地看,我覺得也超過了 1 學期 3 學分應有的標準。

我自己絕對算不上實力堅強的學生,做了簡單的回顧之後也有找到了很多問題:

  • 期中有發過問卷填入自己對課程的期望,我寫了要將所有課程教材看懂,當時還覺得不算很大的目標。後來才發現當時自己過於高估自己的實力,最終也只有看完不到三分之二的教材,更別說看懂了。
  • CS:APP 買了之後,有評估了課程教材,最終決定將讀課本的安排延後,18周前沒有開過課本。
  • 上課被老師點名後,也沒能表現好。雖然不至於到沒法回答,不過最終給出的答案,自己都無法滿意。
  • (quiz 之外的) 作業也沒有完成,最後一份作業只有寫了自我檢查清單的部分。
  • 期末專題只能改正書上句子與錯字的部分。自己實力不足以修改或添加書上內容,現在看着也覺得有點慚愧。