Systems Programming

Assignments

There will be 6 to 8 assignments in this class. Due dates and links will be posted on the course syllabus. The assignments will include lots of programming, so get started early! This will be easy because the assignments will be so much fun!

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.


Author: Mark A. Sheldon
Last Modified: 26 January 2008