Computer Systems: A Programmer’s Perspective


This course covers data representations, machine level representations of C programs, processor architecture, program optimizations, the memory hierarchy, linking, exceptional control flow (exceptions, interrupts, processes, and Unix signals), virtual memory and memory management, system-level I/O, basic network programming, and concurrent programming.

These concepts are supported by series of fun and hands-on lab assignments.