Description: This course is the second part of a two semester sequence, Computer Systems I and II. The goal of this course is to bridge the gap between high-level programming and actual computer components, such as processors, caches, operating systems, compilers, linkers, and so on. This course will teach the way computer systems work from the low level device interrupts up to processes, threads, memory management, file systems and security.

One main aspect of this course will be programming projects, which will enable hands-on learning while gaining valuable and practical experience in computer systems. We will invest significant time in class exploring hands-on learning, so come to class prepared to write code.

Specific Outcomes:
Understand the objectives and functions of modern operating system.
Describe and use techniques for achieving concurrency and synchronization.
Explain the workings of a system with virtual memory management.
Understand security risks and protection mechanisms for computer systems.

Instructor: Mirela Damian, Professor of Computer Science