CMU CS15213: CSAPP
- Offered by: CMU
- Prerequisites: CS61A, CS61B
- Programming Languages: C
- Difficulty: 🌟🌟🌟🌟🌟
- Class Hour: 150 hours
This course is one of CMU's most reputable courses, and is known for its extensive content and difficult projects. The course covers assembly language, computer architecture, operating systems, compilation and linking, parallelism, networking, etc. As an introductory course of computer system, it has both breadth and depth, and does require considerable perseverance and coding skills if you learn it on your own.
The textbook for this course, known as CSAPP, was written by Professor Bryant, Dean of the School of Computer Science at CMU. This is also the first computer textbook that I read carefully from the start to the end, although it was tough, I gained a lot from it.
Peking University purchased the copyright of the course and opened a similar one, but you can have access to all of the course resources on its official homepage (see the link below for details).
This course is so famous that you can easily have access to the project solutions on the Internet. But if you really want to practice your coding skills, it is highly recommended to implement the projects on your own.
After completing this course, your understanding of computer systems will definitely go up a notch.
- Course Website: http://csapp.cs.cmu.edu/
- Recordings: https://scs.hosted.panopto.com/Panopto/Pages/Sessions/List.aspx#folderID=%22b96d90ae-9871-4fae-91e2-b1627b43e25e%22
- Textbook: Computer Systems: A Programmer's Perspective, 3/E
- Assignments: 11 Projects, skeleton code all open source.
If you have trouble with Chapter 7 Linking, I recommend reading the book Programmer's Self-Cultivation, subtitled link. load and library. This book can complete our understanding of program linking, and I believe after reading this book you will have a deeper comprehension of program linking, ELF files, and dynamic libraries. It is highly recommended to be read as a supplementary material after reading CSAPP and having a certain understanding of computer systems.