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.

Specific Outcomes:
Understand the objectives and functions of modern operating systems.
Describe and use techniques for achieving concurrency and synchronization.
Explain the workings of a system with virtual memory management.
Understand basics of networking and Internet communication.
Describe the role of error correction codes in memories, storage and networks.
Understand security risks and protection mechanisms for computer systems.

Instructor: Mirela Damian, Professor of Computer Science