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.)