General Information on Programming Projects
(c) 1997, Howard E. Motteler
Documentation and Coding Style
Projects should begin with your name, SSN, and the project number
(e.g., "Project 2") in a comment at the start of the file. This
should be followed by a short description of how you solved the
assigned problem, including a mention of how well your project
works, as best you are able to determine. Any further requirements
for documentation will be specified in the project handout.
Functions and procedures should be accompanied with at least a brief
description of what they do, and of what their parameters are.
Long, complex, or subtle procedures will generally need more careful
documentation. Aside from the required documentation, you can
choose your own coding style, as long as you are consistent with it
and it reflects program structure in an effective way. The emacs
editor has editing modes for justifying and formatting code, for
several languages, which can be helpful in this regard, and examples
of reasonable coding styles will be provided for each language used.
Due Dates
Due dates are typically days that class meets, and projects are
always due by midnight of a due date. There are no extensions, and
no incompletes, except as required by university policy. Projects
can be turned in early for extra credit: there is a 10% bonus for
turning in a project two days early (or sooner) and a 5% bonus for
turning in a project one day early. Projects can also be turned in
late, but will be penalized 5% for each day they are late. It is
important to plan your time effectively; typically, the biggest
trouble students have with projects is simply finishing them on
time.
Test Data
You will be given sample test data, but it is not guaranteed to be
comprehensive, in the sense of being able to uncover every possible
programming error. A major part of any real programming project is
designing effective tests. Your project will be tested on test data
that is similar but not necessarily identical to the sample test
data. For some projects you will write functions or procedures to
be linked with code that I provide. In this case you must use the
procedure or function names specified in the project handout, as
other names will not link with the test routines.
Submitting Programs
You are to submit a source file (or files, for some projects) which
typically contains a number of function, procedure, and data
definitions; details may depend on the particular project and
language. Do not submit object files or executables. At the top of
each file you should include your name, SSN, and project number.
From UCS machines, you should use the UCS submit utility to submit your program. From
CSEE machines, it may be necessary to use email to submit your
projects, until such time as a "submit" program is installed. Do
not use email if the "submit" program is available.
Grading
Working correctly counts for at least half of a project's grade; the
exact way in which points are assigned for correctness, design,
documentation, efficiency, etc., vary with the project and is given
in the project handout. Overly long or inefficient solutions may be
penalized. Partial credit may be given for solutions that only work
on part of the test data. Projects that don't compile get 0 points.
You must do the project that is assigned. Doing some other similar
or dissimilar project, no matter how clever, may be worth 0 points.
You should understand how your projects works, and exam questions
will sometimes cover details of project implementation.
Academic Honesty
It's OK to talk about how to solve problems, but the projects are
not group projects. Do not submit other people's work as you own.
You should keep your code to yourself; if your project is copied, it
may be hard to determine who the real author was.
Any help you receive should be documented in a comment at the
beginning of your program. For example, if you found a solution to
a Lisp exercise in a text or manual, you should cite the source.
Reasonable help will not affect your grade; failure to cite your
sources is cheating. (The preceding sentence was borrowed from Jim
Mayfield's 331 syllabus, as was the idea of requiring citations.)