Computer Science Department
University of California, Los Angeles
Joseph R. Shinnerl
Winter 2004

CS 31 PROGRAMMING PROJECT REQUIREMENTS

Design: Program design must use the modern programming methods discussed in lecture: modular programming, structured programming, and, as appropriate, object-oriented programming.

Coding: Coding must be clear, simple, efficient, and straightforward. Good style is essential. All code must be carefully commented to explain the purpose of each segment of code. Small redundancies and other inefficiencies are permissible only if they do not substantially detract from the readability and run-time performance of the program. Gross inefficiencies will be penalized, as will efficient but excessively cryptic solutions.

Testing: All code must be thoroughly tested using supplementary test data in addition to any test data provided with the problem specification. Perform validity checking on the input: prevent the user from crashing your program and display error messages for each invalid input value that you catch. For the first few assignments of CS31, you may assume the input is of the correct type, but you must check that it falls in the correct range.

Report Requirements: For each project, you will submit your C++ source code (one or more specified files) as part of a complete report. The English (non-C++) part of the report may be formatted in your choice of plain text (.txt) (ASCII), HTML (.html), MS Word (.doc) , Adobe PDF (.pdf), or postscript (.ps). MS Word documents must NOT contain macros. Standard graphics formats like JPEG (.jpg) and GIF (.gif) are also acceptable for flow charts and other diagrams; be careful that the size of any such graphics file is not too large (roughly, over 100K bytes). Source code (C++) must always be formatted in plain text. Reports are submitted online at a special web site described separately. All programming project reports require the following items,

  1. A summary project cover page specifying the following.
    1. your full name and, if different, your nickname
    2. student ID number
    3. course name, discussion section, and TA
    4. project number and subtitle
    5. time and date of submission
    6. compiler used
    7. list of known bugs in your solution (if necessary, refer to a larger section of report)
    8. lessons learned
  2. A brief (1 paragraph) narrative description of the program.
  3. Implementor's documentation - describe the algorithm you used for program and any distinguishing features of your version of it. This section must include flowchart(s) or break-out diagrams. In addition to the diagrams, pseudocode may also be used, but pseudocode alone is not sufficient.
  4. User documentation - explain how to run your program: expected input and restrictions, run-time options and variations, and expected output. Specify all sentinels and how to quit.
  5. Program source code: all .h (if any) and .cpp files.
  6. Input for at least 4 test runs. This input will also be called "test data."
  7. Corresponding output for your test runs.
    Input and output are listed separately. Dumping the run-time display on your screen to a file is insufficient.
Before any of your projects are graded, you must sign and submit the honesty pledge circulated in lecture the first day of class.