CS61: Systems Programming and Machine Organization

Undergraduate CS course, Harvard University, Computer Science Department, 2020

CS 61 is the introductory systems programming class at Harvard, normally with around 200 students enrolled. Main topics include: C, C++, and assembly language programming, performance analysis and improvement strategies, memory management, caching, concurrency, threads, and synchronization. The class is taught by Professor Eddie Kohler with around 15-20 teaching fellows every year (of which I’m one!).

Here’s some of my favorite parts of the class:

My favorite section to teach: virtual memory!

I love page tables! It’s a unique data structure that allows us to map a huge address range with relatively few pages. Also the idea of virtual memory, while a simple one, is extremely powerful. I love blowing students’ minds with the idea of a virtaul and physical address space and that this conversion is actually done on hardware.

My favorite problem set: Shell!

While one of the most challenging of the assignments, it’s also so cool to build your own functioning shell. Also I think in terms of software design it has the most interesting design decisions in terms of how you want to structure and parse your commands. Also I think being able to fork off subshells and commands is such a cool concept and really allows for students to get a more concrete idea of process creation.