Catalog Description

Fundamental principles of operating systems: process synchronization, deadlocks, memory management, resource allocation, scheduling, storage systems, and study of several operating systems. A major programming project will be required.

Basic Information

  • Course Title: Introduction to Operating Systems (CMPS 111)
  • Prerequisites: Algorithms and Abstract Data Structures (CMPS 101), and Comparative Programming Languages (CMPS 112), or Computer Architecture (CMPE 110).
  • Lectures: MW 07:10 PM - 08:45 PM ( J Baskin Engr 152)
  • Instructor: Dr. Karim Sobh (

Office Hours: 14:30 - 15:30 MW (E2-255)
                         17:30 - 18:30 MW (E2-255)

  • TA:

Aneesh Neelam (, Office Hours: Wed 14:00 - 15:00 (E2-480)

Madhura Abhyankar (, Office Hours: Mon 11:30 - 12:30 (E2-480)

  • Labs:
    • M 15:00- 17:00 (Soc Sci 1 Mac Lab Room 135)
    • Wed 9:30 - 11:30 (Soc Sci 1 Mac Lab Room 135)
    • Wed 10:40 - 11:45 (PhysSciences 130) [Optional]
    • Thu 14:00 - 16:00 (Kresge Windows Lab Room 317)
    • Fr 09:30 - 11:30 (Soc Sci 1 Mac Lab Room 135)
    • Fr 12:00 - 13:05 (PhysSciences 130) [Optional]


Textbooks and References

The primary textbook is Modern Operating Systems, by Tanenbaum, make sure to get the 4th Edition (ISBN 013- 359162-X). It covers the main topics of uniprocessor operating systems in the early chapters, and then covers dis- tributed systems and other advanced topics in the later chapters. The second book, The Design and Implementation of the FreeBSD Operating System will be needed extensively for the assignments, and we will be referring to specific chapters that will need to read to be able to do the assignments.

  • Modern Operating Systems, 4th ed. , Tanenbaum & Bos (ISBN 0-13-359162-X)
  • The Design and Implementation of the FreeBSD Operating System, 2nd ed. , McKusick, et al.


Course Goals

Students who take this course should learn the fundamental principles of operating systems. The course covers the various important aspects, characteristics, and design approaches of operating systems in general. The presented concepts will be complemented with examples from real modern operating systems such as FreeBSD.

The is not a theoretical course by any means and the student should be prepared to get his/her hands dirty as there will be a considerable amount of code writing involved. During the course students should learn how to read already existing operating systems code, reverse engineer it, and be able to hook it and add new or modified functionality to it. The assignment projects are designed to implement concepts and implementation details explained in class through amending and modifying the kernel code of the FreeBSD open source operating system.

Major Topics Covered

  • Operating system concepts and fundamentals.
  • Processes, thread, inter process communication, and scheduling.
  • Synchronization and deadlock.
  • Memory management.
  • I/O devices and interrupt handling.
  • File systems.
  • Multi-core systems.
  • Introduction to distributed operating systems.
  • Virtualization.
  • Protection and security (if time permits).