當前位置: 華文問答 > 數位

如何閱讀【深入理解電腦系統】這本書?

2013-05-27數位

昨天15513出分了結果還不錯,趁著記憶還比較新鮮來說一下對CSAPP以及這門課的感覺。

學CS的話,不太建議看書。凡是學一門課,看優秀的公開課視訊以及寫編程作業是最有效率的方法。對CSAPP也不例外。這本書對應的課是CMU 15213/15513。課程網站的官方地址是15-213/18-218/15-513: Introduction to Computer Systems。目前正在更新2017 fall的內容。剛看了下,第一節的教學視訊是最新的。建議對電腦系統感興趣的同學看視訊,遇到問題或者對某些具體細節感興趣的時候再去看書。15513的ppt和lecture提煉的很好,基本把書中最幹貨最重要的內容包含進來了。相比於看書可能能節省不少時間。

學習這門課我覺得收獲最大是寫lab。這門課一共有6個lab。分別是

Data Lab:bit 運算與float的相關操作

Bomb Lab:閱讀組譯破解密碼

Attack Lab:Buffer Overflow 攻擊

Cache Lab:實作一個cache simulator已經一個cache efficient的矩陣轉置。

Shell Lab:用多行程實作一個簡單的linux shell。主要是熟悉行程控制與同步。

Malloc Lab:自己寫一個C語言的malloc函式。

Proxy Lab:寫一個支持HTML的多執行緒Server。熟悉Unix網路編程與多執行緒的控制與同步。

個人感覺收獲比較大的是Shell Lab和Proxy Lab。因為執行緒,行程的控制與同步,光看視訊或者教科書可能印象不是很深。可是一旦自己實作了就會對這個塊內容理解地更加透徹。這裏贊一下CMU的Autolab,每次作業都會提供很多測試用例。Handout也寫得很詳細,會告訴很多debug的方法與工具。

所以我的建議是,沒必要直接啃書,先去看視訊,然後一定要做對應部份的Lab。Lab的handout和start code可以在CS:APP3e, Bryant and O'Hallaron 這裏找到。

有關其他電腦科學和機器學習的公開課推薦,可以參看我的另一個回答:李遠:Coursera 上有哪些課程值得推薦?