CS422/522: Operating Systems, Spring 2008, Yale University
Students will be paired as a working group for each project. Each project has two grading phases: design review and final submission. To conduct a graded design review, each working group or student will meet with your TA for 10 minutes one week before the project is due. The main purpose of the design review is to get you start on the projects early. Another purpose is to let you catch errors early to avoid frustrated debugging. Also, it gives you a chance to explain and defend your approach. Each student needs to prepare a short presentation to show your approach to the TA. You should pretend that you are in the real world and give your supervisors a design review presentation. Our advice is to prepare one or two pages showing your data structures, interfaces, and algorithms instead of showing encrypted code. Drawing diagrams are very helpful. Your presentation should take no more than five minutes and the feedback from the TA will normally take no more than five minutes.
Note that you have to sign up for a design review session. No design review session = no grade for the design review. If you don't show up for your design review session, you'll have to make a new appointment and 10% of your design review grade will be subtracted.
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.
Finally, a former student had the following suggestions for doing well in this course, and since we agree with all of them, we include them here:
Each student is given 8 discretionary late days (i.e., 192 hours) for the assignments, but any one assignment may only be up to 72 hours late. These are calendar days, not business days. As the homework assignments are submitted electronically, the "write date" on the student's homework file will be considered the completion date for late assignments.
After you use up all of your discretionary late hours, assignments turned in late will be graded according to the following formula: S = R * (1 - t / c), where S is the grade given, R is the grade the work would have gotten if turned in on time, t is the amount of time by which the work was late, and c is equal to four days. Thus, the value of a late assignment decays daily, with a half-life of just over two days. Examples: work turned in five minutes late gets 99.9% credit, one hour late gets 99.0% credit, six hours late gets 93.8% credit, one day late gets 75.0% credit, two days late gets 50.0%, and three days late gets 25.0%. Assignments submitted more than 72 hours late will not be accepted.
There will be no extensions due to scheduling conflicts, computer downtime, or other such factors, except under truly extraordinary circumstances. Extensions will be granted only for university-sanctioned excuses such as illness, and then only with the proper documentation. You are responsible for planning ahead and managing your time so that you can complete the assignments on time. You must either finish on time or accept the consequences of doing otherwise.
Programming is craft: something like a high-tech form of silversmithing. To make big systems work, it takes tremendous amount of discipline and structure.Summary: programming takes discipline and is a learned craft. Take time up front to save time later. Be willing to cut your losses.