In compliance with Wellesley's grading guidelines, satisfactory performance will earn a C. For programming assignments, that means a program needs to compile without errors, run without crashing (much: a crash in some special circumstance is tolerable), and do the bare minimum. A good program does all this, crashes less, is reasonably well documented, and does the job well. A "conspicuously exellent" program runs without errors, is well documented, and is excellent in some way. Sometimes that involves some measure of creativity or extension to the basic assignment, so I can't say in advance what that is.
You should document what isn't obvious from the code. That usually means saying not what something does, but why it's there and how it fits into the overall program. Line by line documentation is not necessary, but certainly every function needs some explanation.
Try to put yourself in my shoes, or the shoes of someone reading your code who doesn't know what the program is supposed to do or how it's supposed to work.
For identification purposes, every program must have the author's names (both names) and the assignment name or number at the top.
Note that I have deliberately not demonstrated good documentation in the example programs because we will study them to determine what they do and how they work. You are encouraged to document your own copy as a way to help your understanding.
C coding style is not that different from Java style, and there is room for alternative styles. Pairs programming may help you learn new styles and improve your own; talk with your partner about this.
I've written a longer essay on style
There are essentially two kinds of problems in this course: programming problems and "math" problems.
Please turn in your program source code using the "drop" or "submit" programs on the Linux machines. If you are doing pairs programming, I only need one copy from the pair. Make sure both names are in the documentation of the program.
I do not need a print-out. I'll print it out myself.
Use the "drop" program if you have just one file. Note that you'll be submitting your source code (the "py" file) in every case. Please name your assignment something intuitive. Some people like names like "hwk1.cc" and others like names such as "polyhedron.cc." I'm fine with either one. This is what the command will look like on the Linux machine:
drop cs307 file.py
If you have multiple files to submit, as with the texture-mapping assignment, use the "submit" script, which collects them all in one submission under a single assignment name. Each assignment will have a name for the purpose.
% submit cs307 ASSIGN_NAME file.py *.ppm
For non-programming problems, I would prefer that the answers be typed up and emailed to me. If a sketch is required, try to use a drawing program if possible and attach a GIF or PNG file to your email. Please try to avoid using pieces of paper, because they can get lost or stolen.
On the other hand, I know that doing math in soft copy is difficult, so if it becomes painful to do the math electronically, I'll also accept paper copy shoved under my door. If you do this, be very sure that all the sheets of paper are securely stapled together, have your name on them, and are pushed under far enough that others will not be able to fish them out. (I don't actually expect that, but some students have made such allegations in other classes, and it's easier to avoid problems than to remedy them.)
Deadlines are at midnight unless otherwise stated. I won't quibble about turning something in at 12:01, but please consider midnight to be a very strict deadline.
If you're late, you may use lateness coupon. If you run out of lateness coupons, there will be a 10% penalty per day.
If you submit late, please send me an email saying when you submitted. That helps me know that you have, in fact, submitted and when.