(Prerequisite, CS 561.) This course is designed to study the principles and problems involved in the development of an operating system of a computer. Overview of the development of operating systems, sequential and concurrent processes, cooperation, communication and mutual exclusion, synchronization constructs: monitors, conditional critical regions, semaphores; deadlocks, resource allocation, scheduling policies, storage management, case study of the operating system of a personal computer.