This course will deepen students' knowledge in designing Operating Systems (OS) and Systems Programming. The course consists of five modules; each focuses on a specific topic:

1. Process management: The first module describes the concepts of process and concurrency and covers methods for process scheduling and interprocess communication. Moreover, it includes a detailed explanation of threads and parallel programming.
2. Process synchronization: The second module covers process synchronization and deadlock handling methods.
3. Memory management: The third module deals with managing the main memory during the execution of a process. Particularly, this module covers different memory-management schemes that reflect various approaches to memory management.
4. Storage management and file systems: The fourth module explains the mass storage and file systems that provide mechanisms for storing and accessing data and programs. It also describes the internal algorithms and structures of storage management.
5. I/O management: The last module describes how I/O is handled in a modern computer system. This module discusses system I/O, including I/O system design, interfaces, and internal system structures and functions.


Intended Learning Outcomes (ILO)

After passing the course, students should be able to (according to Bloom's taxonomy):
  • ILO1: Understand the main OS modules, i.e., managing process, memory, and storage.
  • ILO2: Apply the grabbed knowledge to implement the given tasks in different OS modules.
  • ILO3: Analyze the technical merits of a specific OS module.

Course Staff