While we want a free, mutually supportive, and collegial atmosphere in the class, you must abide by the course collaboration policy.
Late Homework
Unless specifically noted, assignments are due by midnight of the due date. If an assignment is due on Friday the 13th, then you have all day Friday to work on it. Each of you gets 5 late days to use during the term: you can turn in 5 assignments 1 day late, or you can turn in one assignment 5 days late. This will allow for inevitable conflicts while ensuring that no one falls too far behind.
Testing and writeups
In this class you are expected not only to write code, but to demonstrate that it works (to yourself and to me). This means testing. Often, homeworks will come with specific tests in order to help you get started thinking about this. But, particularly after the first couple assignments, you will be expected to devise and document tests. Successful compilation does not count as demonstration of correctness. Running on a single case, while nice, is also not sufficient.Tests should include both correct and incorrect data. You would not be happy with a systems program that crashed on some arguments or on malformed input, and we will endeavor to write similarly robust code. Good error reporting is welcome!
Documentation should, unless explicitly stated, go into a file
called README
in the corresponding directory. You
can describe (in English) any interesting details of your testing
strategy (a proof of correctness is not necessary). You may also
list test cases and any relevant files.
Demonstration of working code, when required, will go in a
script file. To create a script file, I recommend
that you run a shell inside emacs (via M-x shell
),
run your tests, and then save the result. Do not use the
script
command.
This requirement for documented tests means that your code should actually work (at least on some cases) before the deadline. Testing will reveal bugs that will take time to fix, so it's not just a matter of allowing time to run the tests. Try to get a first working version done about 2 days before the final due date of the assignment.
How to submit homework
Most assignments will require only online submission. When
hardcopy is required, it is to be given to me or slipped under my
office door. To submit materials on line, you will copy files into
a course drop directory using the drop
program:
% drop systems files.tar
copies
files.tar
from your current directory
to your course drop directory. Each assignment will state what
file(s) you need to submit.
Everything you submit should have your name, the course, the
assignment, and the date at the beginning, even
README
and script files. (The #
character introduces comments in the Unix shell.)
Homework will be graded in accordance with the course policies.
You all have written quite a bit of code by now, and you each have your
own style. In this course, we will adopt a standard
course style:. Your code must adhere to these conventions.
Last Modified: 26 January 2008