Skip to content

Core Computing Systems draft

hanjiexi edited this page Dec 20, 2018 · 1 revision

Core Computing Systems

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.

Prerequisites

  • Foundations Physics
  • Core Programming

Resources

Survey

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

Machine Systems

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

Operating Systems

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

Needed by

  • TODO