-
Notifications
You must be signed in to change notification settings - Fork 21.9k
Core Computing Systems draft
In this curriculum, we use "Computing Systems" to encompass both machine systems (also called computer architecture) and operating systems. We combine these two together because coursework tends to combine them together (e.g., both Nand2Tetris and Computation Structures mix the teaching of a simple operating system with hardware-focused material).
Physics should be considered a soft prerequisite as the courses are fairly self-contained. We have listed it because MIT Computation Structures technically requires it.
Ideally, students will complete all of Survey, Machine Systems, and Operating Systems. If this is not possible (due to cost or other access reasons), try to complete at least one of either Survey or Machine Systems.
Those who intend to study low-level systems programming, such as through the Advanced Computing Systems track, should consider Machine Systems to be completely mandatory.
- Foundations Physics
- Core Programming
Code is excellent for taking students all the way up the ladder of abstraction starting at the very bottom, demonstrating that a computer doesn't need to be what we traditionally think of as a "computer". However, it doesn't have any projects; it's light, optional reading.
Format | Resource | Use cases | Length |
---|---|---|---|
book |
Code: The Hidden Language of Computer Hardware and Software (Charles Petzold) | motivation |
559 pages |
book |
The Elements of Computing Systems: Building a Modern Computer from First Principles (Noam Nisan and Shimon Schocken) | learn |
354 pages |
course |
HUJI Build a Modern Computer from First Principles: From Nand to Tetris | learn |
20 hours |
course |
HUJI Build a Modern Computer from First Principles: Nand to Tetris Part II | learn |
100 hours |
Unfortunately for those who prefer text resources, there are no freely available books on machine systems (computer architecture) of sufficiently high quality for us to recommend. The author of Operating Systems: Three Easy Pieces, one of the few high-quality free books on operating systems, is currently working on creating such a similar work on machine systems, and we have left a placeholder for this new book for whenever it is ready. If you decide to use Patternson and Hennessy, know that you are advised to follow the readings and do the labs assigned in Berkeley CS61C.
For everyone else, we recommend MIT Computation Structures parts 1-3.
Format | Resource | Use cases | Length |
---|---|---|---|
book |
Computer Organization and Design MIPS Edition: The Hardware/Software Interface (Patterson and Hennessy) | learn |
800 pages |
book |
Placeholder: Computer Systems: Three Easy Steps (not yet available) | ||
course |
MIT Computation Structures 1: Digital Circuits | learn |
60 hours |
course |
MIT Computation Structures 2: Computer Architecture | learn |
60 hours |
course |
MIT Computation Structures 3: Computer Organization | learn |
60 hours |
First learn basic C by taking Aalto C (if you prefer text-based) or the C parts of Harvard CS50 (if you prefer video-based). Then read OS:TEP and do all the exercises or take Hack the Kernel.
Format | Resource | Use cases | Length |
---|---|---|---|
text |
Aalto C | learn |
|
course |
Harvard CS50 | learn |
|
book |
Operating Systems: Three Easy Pieces (Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau) | learn |
714 pages |
course |
Hack the Kernel | learn |
- TODO