This course provides a programmer's view of how computer systems execute programs and store information, with exercises using the C programming languge. It examines key computational abstractions behind high-level programming languages: number and data representations, memory/pointers, stack & buffer overflow, processor instructions caching, virtual memory, programs and processes, and basics of concurrency with threads. The Big Ideas in this class are broadly applicable across the many subfields of computer systems and computer science, with specific instances demonstrated through labs and projects.
For more information, please see the course syllabus.