MPCS 52030 Operating Systems (Spring 2026)

Section 1
Instructor(s) Nicholson, Anthony (ajn)
Location Crerar 011
Meeting Times Wednesday 5:30pm - 8:30pm
Fulfills Core Systems Elective

Syllabus

This course provides an introduction to fundamental concepts in operating systems, including processes and threads, interprocess communication and synchronization, memory management, segmentation, paging, linking and loading, scheduling, file systems, and input/output. This course revolves around the implementation of an x86 operating system kernel, divided into four separate projects, which accounts for the majority of the grade. Students will develop these projects in pairs. To successfully complete these projects, students must understand fundamental concepts in operating system design and implementation, which are provided through the lectures. There will also be a midterm and a final.
 
The projects use the Pintos instructional kernel, which already implements some of the low-level functionality of the kernel, allowing the students to concentrate on implementing higher-level operating system functionality, such as thread management, memory management, etc.
while still allowing them to peek under the hood.

The project is divided into four parts:
  1. Threads: Students are given a minimally functional thread system, which they will extend to gain a better understanding of synchronization problems.
  2. User Programs: Pintos already supports loading and running user programs, but no I/O or interactivity is possible. Students will enable programs to interact with the OS via system calls.
  3. Virtual Memory: Pintos is limited by the machine’s main memory size. In this project, students will remove this limitation by implementing a virtual memory management system.
  4. File Systems: Students will improve Pintos’ basic file system.
The project involves large amounts of low-level C programming, and students are assumed to already be comfortable with C Programming.

Course Prerequisites

Must have completed MPCS 51036, 51040, 51042, 51046, 51100, CAPP 30122, MACS 30122, or have a Core Waiver for Programming. Knowledge of C/C++ programming required (the C Bootcamp satisfies this requirement.)

This is an advanced Core Systems class and we recommend that students take MPCS 51082 Introduction to Unix Systems or MPCS 52011 Introduction to Computer Systems before enrolling in this course.

Other Prerequisites

This course requires competency in Unix and Linux. If you attended the MPCS Unix Bootcamp you covered the required material. If you did not, please review the UChicago CS Student Resource Guide here: https://uchicago-cs.github.io/student-resource-guide/.

Course request information for non-MPCS students: https://masters.cs.uchicago.edu/student-resources/non-mpcs-student-course-requests/

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 53810-1 -- Topics in Algorithmic Game Theory
  • MPCS 53001-1 -- Databases
  • MPCS 51235-1 -- Advanced User Interface and User Experience Design
  • MPCS 51260-1 -- Human-Computer Interaction
  • MPCS 51238-2 -- Design, Build, Ship

Eligible Programs

MS in Computational Analysis in Public Policy (Year 2) MS in Molecular Engineering MA in Computational Social Science (Year 2) Bx/MS in Computer Science (Option 2: Professionally-oriented - CS Majors) Bx/MS in Computer Science (Option 3: Profesionally-oriented - Non-CS Majors) Masters Program in Computer Science