CATALOG DESCRIPTION: A fundamental overview of operating systems. Topics covered include: Operating system structures, processes, process synchronization, deadlocks, CPU scheduling, memory management, file systems, secondary storage management. Requires substantial programming projects.

  • Approved for Systems Breadth and Depth in the CS curriculum in McCormick and Weinberg
  • This course satisfies the project requirement. 

REQUIRED TEXTBOOK : 'Operating System Concepts', 9th Edition; by Abraham Silberschatz, Peter B. Galvin, Greg Gagne; ISBN 978-1-118-06333-0

COURSE COORDINATOR: Prof. Fabián E. Bustamante

COURSE GOALS: Operating systems control all of a computer's resources and present users with the equivalent of virtual machines that are easier to program than their underlying hardware. This course provides an overview of fundamental operating system principles, complemented with discussions of concrete modern systems to help you understand how these principles are applied in real OSs . Topics covered include an overview of the components of an operating system, mutual exclusion and synchronization, implementation of processes, scheduling algorithms, memory management and file systems. Although the main learning objective of the course is to understand the requirements, design and implementation of modern operating systems, at a higher level the course aims to provide you with a good grasp of basic abstractions employed in system-level software (such as processes, threads, virtual memory, caching, etc.), while uncovering the ``magic' that happens inside the box. The course has a strong project component intended to provide essential experience in designing and implementing complex systems and working as part of a team. In designing the projects and estimating their required effort/hours, I am assuming you are (1) familiar with basic computer organization and data structures and (2) capable of programming in C in UNIX (or UNIX-like) systems (experienced with pointers, explicit dynamic memory allocation, multi-file projects, etc.).

PREREQUISITES: EECS 214 & either EECS 213 or EECS 205 & EECS 231 (for ECE majors).

DETAILED COURSE TOPICS:

  • Operating Systems Concepts & Structures
  • Processes
  • Threads
  • Scheduling
    Processing Syncronization
  • Deadlock
  • Memory Management
  • Virtual Memory
  • File Systems Interface
  • File Systems Implementation
  • Mass-storage & I/O Systems
  • Protection & Security
  • Introduction to Distributed Systems
  • Research in Operating Systems

HOMEWORK ASSIGNMENTS: Varies; example topics covered in previous iterations include

  • Introduction, Processes & Threads
  • Introduction, Processes & Threads
  • Memory management
  • File Systems, Mass-Storage and I/O
  • Research in Operating Systems

PROJECTS: There will be four (4) projects. Except for the first "warm-up" assignment on which you will work by yourself, all other projects are to be done by teams of two (2) people. Both partners should work cooperatively on the design, implementation, and testing of their solution.

GRADES:

  • Homework 10%
  • Projects 50%
  • Exams (20% each) 40%

COURSE ORGANIZATION: The course is organized as a series of lectures, TA sessions, reading, homework, projects and exams:

  • Lectures - A set of lectures through which I present the core of the material.
  • TA Sessions - Discussion sessions held by the TAs to answer questions about the lecture, readings, homework assignments, and projects.
  • Readings - Textbook reading in preparation for (not substitution of) the lecture and additional reading for those interested in delving further into some topics.
  • Homework - Five homework assignments with questions from (or similar to those in) your textbook, aimed at reinforcing the material covered in the reading and the lectures.
  • Projects - Four programming projects to give you a better understanding of the subject matter and some experience with system level programming including thread-level programming.
  • Exams - Two exams, a midterm and a final exam. These exams cover the material presented in the lecture, homework assignments and projects. You'll be able to bring one page of notes to assist you during the exam.