版本 65dd485be2267eaf8efea2cc38546b69ddd5abc2
User/asd757817
asd757817(錢彥伯)
email: asd757817@gmail.com
簡介:
- 成功大學 電機工程學系107級(2014-2018)
- 成功大學 電腦與通信工程研究所 資訊與系統組(2018~ )
個人評量
作業及筆記
- HW1(筆記心得) Hackmd
- HW2(lab0) Hackmd, github
- HW3
* dict Hackmd, github * review Hackmd * list Hackmd, github - HW4
* clang Hackmd * assessment Hackmd - HW5(bit) Hackmd, github 分組作業:
- dict 深入探討 Hackmd, github
- CS:APP, cache lab Hackmd, github
所見所聞心得
因為聽聞 jserv 老師的課程可以大幅增進自己 C 語言的能力,雖然也聽說過課程的難度、強度是數一數二的高,但想說給自己新的學期新的期望,就決定選修這門課。
先說說回家作業:
前幾周的課堂其實非常痛苦,除了被老師課堂上的刺激外,還有大量的材料需要研讀,影片內容往往需要來回撥放幾次、搜尋額外資料才能理解,花了大量時間閱讀材料與作筆記帶來的成果也是非常可觀的,像是指標的運算、取值、rvalue、lvalue 名詞概念都有更深入的認識;而接下來幾週是實作 CS:APP 教材的實驗內容,像是 linked-list 實作、bit-wise 操作等,作業的要求與難度都不高,但在開發過程中卻往往會忽略一些細節(use after free 等),而這些忽略的細節其實都是老師課堂上有特別強調過的錯誤,為了使自己能夠更加嚴謹,在實作的過程中會有一段的陣痛期,開發的習慣必須從原本 trial and error 的方式轉變為嚴謹思考後再行動,只有這樣才是真正自己的程式,以這樣開發的程式才是可靠的;而後半段幾周的分組作業其實相對前幾周並沒有這麼高的壓力,分組實作的部分多是以一個已經有專案深入探討其原理觀念、進行效能比較、改善部分內容等,一來可以學習不同開發者的開發習慣,二來在探討原理觀念時會發現以前學過的知識逐漸貫通,而這些改善的內容在未來都可能是我們在這圈子中的一種貢獻,至於另外一個有趣的事情是每當自己完成了要求,老師就會再丟一個新的想法、觀點進來,而要解釋那些概念又必須花很長的時間研究。
整體而言,作業的難度並不算太高,重點是在能不能理解作業希望我們學習的東西,還有老師上課傳達的觀念,不一定是寫程式技巧,更重要的是身為軟體工程師的自覺與寫出一個自己能負責的程式的那種態度。
而課堂的部分:
基本上每一個禮拜都會有考試,而考試題目通常是概念理解,只有概念完完全全清楚才能夠完全答對,這非常考驗對於原理的理解;老師課堂上會不斷地用言語刺激我們思考,也會一直提到一些以前並沒有特別注意過的事情,讓我發現原來「頂尖」軟體工程師跟我想像的非常不一樣,如果只是想要成為一個很普通的軟體工程師,按照原本的節奏也許行的通,但要邁向頂尖勢必得在意更多的細節,老師在課堂上會給人許多啟發,或許沒辦法將所有部分都了解、貫通,但其實每一部分的學問都是非常深的,只要找到自己喜歡的部分好好鑽研就好了。
自我評量分數 (1 到 10 級分)
我給自己 9 分
在課程開始前我自認為對 C 語言有一定程度的了解,但在前幾周的誠實面對自己後才發現自己其實一點不了解這個語言,所以我給自己設定了一個目標:絕對不可以中途退選,要盡可能地在這堂課中汲取知識! 回顧自己在這學期所付出的努力與吸收到的知識,雖然部分作業並沒有做到最完美的程度,但在這學期的過程中已經盡可能地做到最好,相比與課程開始前也進步了許多,因此我給自己9分,剩下1分提醒自己不要滿足,要持續進步!
老師的26道問題目前可以直接回答並大致正確的有:a b c d e h i j l m n q r t x y z
而在學期前就能夠回的是:c q t
知道大概但無法確定正確答案的:p s u v w
依據這幾道題目進行評估仍然有加強空間,不過對比學期前與現在,我認為我已經對得起自己。