Projects
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.
Policies
Grading
The course grades will be determined roughly as follows:
- Course projects (50%)
- Midterm (20%)
- Final project (20%)
- Reading and Participation (10%)
The course will not be graded on a curve, so students are not competing
against each other. Most projects contain extra credits. The midterm is
tentatively scheduled on the Thursday of the midterm week.
Late Submissions
Project submissions are due at 11:59PM on the due date. Late submissions are
marked down using a popular function. In this way, an assignment which is
only a few hours late doesn't get penalized that much. A late grade is
computed as follows:
grade = original_grade * exp(-time_late/three_days)
Examples: work turned in five minutes late gets 99.9% credit, one hour late
gets 98.6% credit, six hours late gets 92.0% credit, one day late gets 71.7%
credit, three days late gets 36.8%, and one week late gets 9.7%.
Exceptions will be made only in extreme circumstances and only in advance.
Exams
The midterm exam will be designed to test how well students understand the
materials taught in the lectures as well as in the projects. Please watch
the schedule of this web page for the times and the locations of the exams.
Reading & Participation
It is strongly recommended that students read the suggested reading
materials before the class. A number of discussion topics will be provided
on the course web page before each class starts.
Refer here for details.
The participation grades will be based on the students' understanding of the
discussion topics shown in their submitted questions and their contributions in
the class discussions. Student can earn up 1 point for participation (0 for no
participation) and 0.5 extra point for active participation.
Collaboration
We believe that students can learn quite a bit from each other. We encourage
you to help each other understand the materials in the course and in
particular, to learn from each other in doing the operating system projects.
In order to encourage such cooperation, we will give you the opportunity to
tell us those students who helped you the most in understanding the material.
Such information will be turned into extra points for the helpers at the end
of the class.
You can also earn extra credits by developing useful tools for the projects
that can be used by others. To do so, you need to discuss your ideas first
with the instructor and the TAs.
There is a clear distinction between cooperation and cheating. Copying other's
code or designs are strictly prohibited. We will punish transgressors
severely.