当前位置: 华文问答 > 数码

如何阅读【深入理解计算机系统】这本书?

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 上有哪些课程值得推荐?