CSC 200: Project Guidelines

General guidelines for all projects:

Basically, you should submit the following things for both Phase I and Phase II of all projects:
- Source code & Makefile
- User Manual
- Test cases

1. Source code & Makefile

The source code files and the necessary makefiles should be submitted.
Several points are always set aside for coding style---beautiful
code, nice comment etc. If outside packages such as regular expressions
are used, you can either turn in it or leave it inside your own directory
so long as the Makefile being able to produce the executable.

2. User Manual

An ASCII(text) file named USER_MANUAL must be submitted as both design
document and user readme. Basically, the user manual should include the
following:

  a. Header
  - project name and short description
  - names and emails of members of the team
  - the work partition among teammates

  b. Installation
  - a list of files you submitted along with a short description of
each file
  - how to compile your program
  - how to run your program, the command line option or configuration file
  - how to test your program, including how to test each individual
functionalities of the program

  c. Component Design
  - a description of the design and implementation
  - known bugs. Reporting bugs by yourself means you are aware of the
bugs, which may get you less penalty
  - what's done and what's yet to be done
  - anything special that may worth extra credits. This is an
opportunity to show yourself
  - discussion regarding your design alternatives if any. What's your
choice and why

  d. Interface Description & Validation
  - component interface (interface contract as pre- and post-conditions).
The description of the interface should be clear enough help its potential
users(not only the TA) understand and manipulate the program in Phase II.
A good API always helps you attract more groups to use your modules and
gain more points
  - error handling
  - efficiency and performance of your program. Detailed numbers may not
be needed but you still need to give a general outline and estimation

  e. Acknowledgment (required for phase II)
  - credits to those who provide the components or libraries you used.

3. Test cases

A detailed description of each test case should be given to specify
its purpose (which functionality is to be tested), how to run it (the
running process and inputs) and the expected output.