CMPSCI 377: Operating Systems (Fall 2008)

Course Description

This course will provide an introduction to operating system design and implementation. The operating system provides a well-known, convenient, and efficient interface between user programs and the bare hardware of the computer on which they run. The operating system is responsible for allowing resources (e.g., disks, networks, and processors) to be shared, providing common services needed by many different programs (e.g., file service, the ability to start or stop processes, and access to the printer), and protecting individual programs from one another.

The course will start with a brief historical perspective of the evolution of operating systems over the last fifty years, and then cover the major components of most operating systems. This discussion will cover the tradeoffs that can be made between performance and functionality during the design and implementation of an operating system. Particular emphasis will be given to three major OS subsystems: process management (processes, threads, CPU scheduling, synchronization, and deadlock), memory management (segmentation, paging, swapping), file systems, and operating system support for distributed systems.

Assignments: 4 labs in C/C++, 2 exams, 6 or more written homework. Prior experience with C/C++ is helpful.

This is an undergraduate-level course; it is meant for CS undergraduate students. The prerequisites for the course are CMPSCI 187 and (CMPSCI 201 or ECE 232).

Course Information

Instructor: Prashant Shenoy
Teaching Assstant: Shashi Singh

Class lectures: CS Bldg 142, TuTh 1:00 - 2:15
Class Discussions: CS Bldg 142, Wed 12:20-1:10
Schedule #: 72287 (lectures), 72288 (dicsussions)
Credits: 4

Course Staff

Course Announcements

Sept 11: A reminder to send in your group information by tomorrow (Friday, 9/12). Sept 11Online Bulletin board available for course discussions. Sept 10: A reminder to hand in signed course collaboration policy forms.

Course Materials

This page is online at