Princeton University
Computer Science Department

Computer Science 318
Operating Systems

Jaswinder P. Singh
Mohammad Shahrad

Fall 2020

General Information | Schedule | Projects | Policies



The course grades will be determined roughly as follows:

Late Submissions

Project submissions are due at 11:55PM on the due date. Late submissions are marked down using a popular function. In this way, an assignment that 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.


The 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 section of the course website and Piazza for the time of the exam.

Attendance and Participation

It is strongly recommended that students read the suggested reading materials before the corresponding class.


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.

There is a clear distinction between cooperation and cheating. If you discuss an issue with a classmate, put your understanding from that discussion to the Gilligan's Island test! Step away from the discussion for 30 minutes (e.g. long enough to watch an episode of the old Gilligan's Island sitcom) before sitting down to code by yourself. What remains in your brain (no notes) and ends up in code is more likely to be original. Copying other's code or designs is strictly prohibited. We will punish transgressors severely.

Do not, under any circumstances, copy another person's code. Incorporating someone else's code into your code in any form is a violation of academic regulations. This includes adapting solutions or partial solutions to assignments from any offering of this course or any other course. There is one exception to the code-sharing rule: You may adapt code from this year's COS 318 course materials for that project provided that you explain what code you use, and cite its source in your README file. If you are opting to submit a project late, you may NOT examine or use material from the next project. Similarly, you may not consult course materials from previous years or at other universities.

Copying and transforming someone else's code (by rearranging independent code, renaming variables, rewording comments, etc.) is plagiarism. Some inexperienced programmers have the misconception that detecting such plagiarism is difficult. Actually, detecting such plagiarism is quite easy. Not only does such plagiarism quickly identify itself during the grading process, but also we can use software packages, such as Alex Aiken's renowned MOSS software, for automated help.

If we suspect a student of plagiarism on an assignment, then we will refer the case to the Committee on Discipline. If the Committee on Discipline finds the student guilty of plagiarism, then the standard penalty is automatic failure of the COS 318 course. The Committee on Discipline may impose additional penalties.