Princeton University
Computer Science Department

Computer Science 318
Operating Systems

Andy Bavier

Fall 2010

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 were co-developed with colleagues at University of Tromso in Norway and have been used in other institutions such as Yale.

Students will be paired as working groups for the first five projects. You will be regrouped after three projects in order to give you a chance to work with another person for the next two projects. You will be working alone on the last project.

Each project has two grading phases: design review and final submission. Design reviews are discussed here. 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 TA who is in charge of the project will grade the project without correcting your code. It is your responsibility to figure out how to correct your code by comparing your implementations with the released solutions.

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

You will be using the Linux PCs in the 010 lab in Friends Center (so called Fishbowl). All the projects will be done on a USB flash memory stick or using Bochs, so please do not write your kernel to the hard disk. The lab in Friend 010 is reserved for COS 318 students during the whole semester. When working on the projects, it is helpful to test your implementation using a simulator such as Bochs or Qemu during the development phase. After your projects run successfully on a simulator, you should test it on a real PC. Please share test machines if the lab is full.

Due Date Number Project
10/4 1 Bootloader
10/18 2 Non-preemptive kernel
11/8 3 Preemptive kernel
11/22 4 Interprocess Communication & Process Management
12/13 5 Virtual Memory
1/11 6 File Systems