# CMU CS15213: CSAPP ## 课程简介 - 所属大学:CMU - 先修要求:CS61A, CS61B - 编程语言:C - 课程难度:🌟🌟🌟🌟🌟 - 预计学时:150 小时 CMU 大名鼎鼎的镇系神课,以其内容庞杂,Project 巨难而闻名遐迩。课程内容覆盖了汇编语言、体系结构、操作系统、编译链接、并行、网络等,作为系统入门课,兼具深度和广度,如果自学确实需要相当的毅力和代码功底。 这门课配合的教材由 CMU 计算机系主任 Bryant 教授执笔,也即所谓的 CSAPP。这也是我第一本认认真真一页一页读过去的计算机教材,虽然很难啃,但着实收获良多。 北大购买了这门课的版权并开设了 Introduction to Computer System 这门课,但其实 CSAPP 所有的课程资源和实验代码都能在它的官方主页上访问到(具体参见下方链接)。 这门课由于过于出名,全世界的码农争相学习,导致其 Project 的答案在网上几乎唾手可得。但如果你真的想锻炼自己的代码能力,希望你不要借鉴任何第三方代码。 认真学完这一门课,你对计算机系统的理解绝对会上升一个台阶。 ## 课程资源 - 课程网站: - 课程视频: - 课程教材:Computer Systems: A Programmer's Perspective, 3/E - 课程作业:11 个 Project,[代码框架全部开源](http://csapp.cs.cmu.edu/3e/labs.html) 英语有困难的同学可以参考B站UP主[九曲阑干](https://space.bilibili.com/354767108/)对 CSAPP 的[中文讲解](https://www.bilibili.com/video/BV1cD4y1D7uR)(据说CMU的中国留学生也在CMU的课堂上看这个视频呢)。另外如果大家在看完 CSAPP 后对书中的第七章链接有一定的疑问,推荐阅读《程序员的自我修养》这本书,书的副标题是链接,装载与库。这本书能够帮助我们完善对程序链接的理解,相信你在看完这本书以后可以对程序的链接,ELF 文件,动态库都将有一个更加深入的理解。十分推荐在读完 CSAPP,对计算机系统有一定的了解以后作为补充资料来阅读。 有关 Lab 部分,同学们亦可参考 [Arthals](https://arthals.ink/about-me) 在北大计算机系统导论(ICS)课程中所做的详尽笔记: - [Data Lab](https://arthals.ink/posts/experience/data-lab) - [Bomb Lab](https://arthals.ink/posts/experience/bomb-lab) - [Attack Lab](https://arthals.ink/posts/experience/attack-lab) - [Arch Lab](https://arthals.ink/posts/experience/arch-lab) - [Cache Lab](https://arthals.ink/posts/experience/cache-lab) - [Tsh Lab](https://arthals.ink/posts/experience/tsh-lab) - [Malloc Lab](https://arthals.ink/posts/experience/malloc-lab) - [Proxy Lab](https://arthals.ink/posts/experience/proxy-lab)