CS374 - Operating Systems I

Welcome to CS374, Operating Systems I!

This course will provide a comprehensive exploration of operating systems, their fundamental principles, and their critical role in modern computing. Throughout this course, you will learn about the history of operating systems development, the services and abstractions they provide, and how systems programmers write software to interact with these interfaces.

We will use Unix, the most successful and widely adopted operating system in the world, as a case study. You will learn to write programs which demonstrate your understanding of key topics: the shell command language, the C programming language, file systems and i/o, processes and inter-process communication, concurrency, and finally network communication.

Course Learning Outcomes

By the end of this course, you should be able to,

  1. Justify the need for a multi-programmed OS and explain the general structure of such systems.

  2. Select system calls for appropriate uses.

  3. Compare and contrast the process and thread abstractions and select an appropriate abstraction.

  4. Assess and solve possible issues related to concurrent execution.

  5. Explain the file abstraction and system level I/O.

  6. Compare and choose mechanisms for inter-process communication.

  7. Write software by applying appropriate system programming principles and techniques.