Princeton University
|
Computer Science 318 |
Fall 2016 |
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 Tromsø 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. The goal of design review is to help you start early and 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 have prepared some pseudocode, a flowchart, or whatever else you think appropriate in order to demonstrate your plans. Depending on the project, we might also want you to provide running code, or answer 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 10 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 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.
Project 1: Bootloader
Monday, 9/19 - 7:30pm--8:20pm | BootloaderTutorial on assembly programming and kernel debugging |
Monday, 9/26 - 7:30pm--8:20pm | Precept |
Monday, 9/26 - 1:30pm--evening | Design review, Friend 010 |
Sunday, 10/02 at 11:55pm | Project due |
Project 2: Non-preemptive kernel
Monday, 10/03 - 7:30pm--8:20pm | Precept 2 in CS 104 |
Monday, 10/10 - 1:30pm--evening | Design review |
Tuesday, 10/18 at 11:55pm | Project due |
Project 3: Preemptive Scheduler
Wednesday, 10/19 - 7:30pm--8:20pm | Precept 3 in CS 104 |
Thursday, 10/27 - 9:30am--5:00pm | Design review |
Tuesday, 11/08 | Project due |
Project 4: Inter-Process Communication and Process Management
Monday, 11/07 - 7:30pm--8:20pm | Precept 4 in CS 104 (Large Auditorium) |
Thursday, 11/17 - 9:30am--5:00pm | Design review |
Tuesday, 11/22 | Project due |
Project 5: Virtual Memory
Monday, 11/28 - 7:30pm--8:20pm | Precept 5 in CS 104 |
Monday, 12/05 - 1:30pm--7:00pm | Design review |
Wednesday, 12/14 | Project due |
Project 6: File System
Monday, 12/12 - 7:30pm--8:20pm | Precept in CS 104 |
Tuesday, 1/17 (Dean's date) - 5pm | Project due |