All class-related announcements and discussion are available on the 3007 Piazza site.
This class focuses on the principles and practicalities of Computer Systems: how CPU architecture, the memory hierarchy, operating system, linker, loader, and compiler interact to provide the environment in which programs run, with a concrete emphasis on x86-64 assembly language, C, and the UNIX (Linux) systems programming environment. Lectures will focus on how the intricacies of the "whole stack" of hardware and software in a modern computer system determine the correctness and performance of application code. Further topics discussed include data representation, OS kernel implementations of virtual memory and system calls, and the pitfalls of undefined behavior in C.
In the tradition of learning Computer Systems by building them, 3007 includes several programming courseworks in C, including design and implementation of a debugging memory allocator, a bit-level Lempel-Ziv-Welch compressor, virtual memory and process creation support in an OS kernel, and a UNIX shell.
Computer Systems is a compulsory class for 3rd-year undergraduates. We regret that given the size of this cohort, we are currently unable to open the class to Affiliate Students.