Princeton University
Computer Science Department

Computer Science 318
Operating Systems

Jaswinder P. Singh
Mohammad Shahrad

Fall 2020

General Information | Schedule | Projects | Policies


We believe that the only way to master the knowledge of operating systems is to build a real operating system kernel. The six projects in this course are designed to do exactly that. At the end of the class, you will have a small, real operating system kernel. This set of projects was co-developed with colleagues at University of Tromsø in Norway and has been used in other institutions such as Yale.

Students will be paired in working groups for the projects. You will be regrouped after three projects.

Each project has two grading phases: design review and final submission. The goal of design review is to help you start early so our TAs can point out potential mistakes as early as possible. We want to make sure that you can finish the project before it's due so you have time to catch and resolve design errors and avoid frustrating last minute debugging. We don't mind mistakes at this stage; we encourage them. For design review, you should have seriously thought about all aspects of the project so you have a clear idea of what you are going to do. It is a good idea to have started some coding at this stage and for you to have investigated what tools will be necessary and have them working. When you meet with one of us TAs, please be prepared to answer the assigned questions. Your design review will be graded from 0 to 5 points. To conduct a graded design review, each working group or student will meet with a TA for 15 minutes no later than five days before the project is due.

The final submission will be done online, following the specific instructions in each project description. You should include a small README file with your project submission. You should concisely describe your design and implementation. Also, you need to describe what parts work and what parts don't; and how to compile and run your program (if you are not using the Makefile we provided). You don't have to repeat anything you presented in the design review. The TAs will grade the project without correcting your code.

Normally, we will give the same grade to both students in a working group. If one of the students feels that the other student did more work and deserves more credit, please inform the TA who is in charge of the project by e-mail.

Project 1: Bootloader

Monday 9/7 & Tuesday 9/8, 7:30pm - 8:20pm x86 Assembly Tutorial
Monday 9/14 & Tuesday 9/15, 4:00pm - 7:00pm Design Review
Monday 9/14 & Tuesday 9/15, 7:30pm - 8:20pm Precept 1 [slides, recording]
Sunday 9/20, 11:55pm Project 1 due

Project 2: Non-Preemptive Kernel

Monday 9/28 & Tuesday 9/29, 4:00pm - 7:00pm Design Review
Monday 9/28 & Tuesday 9/29, 7:30pm - 8:20pm Precept 2 [slides, recording]
Sunday 10/4, 11:55pm Project 2 due

Project 3: Preemptive Scheduler

Monday 10/5 & Tuesday 10/6, 7:30pm - 8:20pm Precept 3 [slides, recording]
Wednesday 10/7 & Thursday 10/8, 4:00pm - 7:00pm Design Review
Sunday 10/18, 11:55pm Project 3 due

Project 4: Inter-Process Communication and Process Management

You are required to form new teams for Projects 4, 5, and 6. All teams should have three members and your new team should have no overlap with your previous team, except for yourself.

Monday 10/26 & Tuesday 10/27, 4:00pm - 7:00pm Design Review
Monday 10/26 & Tuesday 10/27, 7:30pm - 8:20pm Precept 4 [slides, recording available on course Canvas]
Sunday 11/1, 11:55pm Project 4 due

Project 5: Virtual Memory

Monday 11/9 & Tuesday 11/10, 4:00pm - 7:00pm Design Review
Monday 11/9 & Tuesday 11/10, 7:30pm - 8:20pm Precept 5 [slides, recording]
Sunday 11/17, 11:55pm [EXTENDED] Project 5 due

Project 6: File System

Monday 11/23 & Tuesday 11/24, 7:30pm - 8:20pm Precept 6 [slides, recording]
Dean's Date 12/8, 5:00pm Project 6 due (hard deadline)