CS 350 Operating Systems


Provides an introduction to operating systems: what they do, how they are used, and how they are implemented.

Intended Audience

CS 350 is a required course for CS major academic plans.

Related Courses

Prerequisites: CS 240, 241, 246, (CS 251 or ECE 222); Computer Science students only.

Antirequisites: ECE 354, GENE/MTE 241, SE 350.

Successors: CS 343, and many of the 4th year CS major courses.


Used in Course: C.

Assumed Background: Sequential programming skills and familiarity with computer organization.


Operating Systems Concepts, 8th ed., by A. Silbershatz, P. Galvin and G. Gagne, John Wiley and Son; Course Notes.


3 hours of lectures per week. Normally available in Fall, Winter, and Spring.


Operating System Introduction (2 hours)

The roles of an operating system. Historical overview of operating system development. Operating system architectures.

Multi-Programming (7 hours)

Processes and threads, system calls, context switching. Managing processor time. Types of scheduling, scheduling algorithms.

Concurrency (6 hours)

Principles of concurrency. Mutual exclusion and semaphores. Deadlock detection and prevention.

Memory Management (8 hours)

Simple memory management techniques: partitioning, dynamic loading, simple segmentation. Virtual addressing and address translation. Virtual memory management: segmentation, paging, caching strategies. Load control, swapping, and thrashing.

Device Management (3 hours)

Physical structure and properties of devices, device control and interaction, blocking, buffering, disk scheduling, DMA.

File Systems (5 hours)

File naming, types and logical organization. Space allocation and management. File system interfaces. Implementation strategies. Case studies.

Interprocess Communication (5 hours)

Terminology and issues, message passing functionality, pipes, sockets, signals, shared memory, and other communication mechanisms.