MPCS 52030 - Operating Systems

Course Staff

Instructor

Borja Sotomayor (borja@cs.uchicago.edu)

Office: Young 308-B and Eckhart 120-B

Office hours:

  • Mondays 4-5pm in Young 308 (open Q&A format)
  • Mondays 6:15pm-7:15pm in Young 308-B
  • Wednesdays after class in Eckhart 120-B

TA

Yan Liu

Office hours:

  • Tuesdays 4pm-5:30pm in Eckhart 131
  • Thursdays 4pm-5:30pm in Eckhart 131

Outside of office hours, please do not contact Yan directly with questions; always ask your questions on Piazza.

If the above office hours do not work with your schedule, please contact the instructor to make an appointment at an alternate time.

Course Description

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 involves large amounts of low-level C programming, and students are assumed to already be comfortable with C Programming.

For more details, please see the syllabus.