Project Artifacts

A project artifact is a website containing your project's documentation, organized in such way to allow another programmer (i.e., a professor or TA) or user (i.e., a potential customer) to quickly understand your program and easily find any detail or how to use it. It is your responsibility to determine a useful order for the sections in the artifact, simply putting them in alphabetical order is not sufficient.

Your artifact must include at least three sections: a user's manual, programmer's manual, and source code documentation. You may certainly include more it you are inclined to do so. You must include everybody's name that worked on the project, including outside people with whom you collaborated, on everything that you create.

User's Manual

A user's manual describes the features of your project to non-programmers, so they will know how to use your project and what to expect from using it. Specifically, your manual should describe

Here are some examples of user manuals from previous semesters. These examples are not endorsed in any way, but are meant to serve as an example.

Programmer's Manual

A programmer's manual paints a big picture of the design and creates a map of your project for other programmers, so they will know where to look to fix bugs, make additions, etc. Specifically, your manual should include

Here are some examples of programmer manuals from previous semester. These examples are not endorsed in any way, but are meant to serve as an example.

Source Code Documentation

Finally, you should generate HTML documentation for each public package, class, function, and constant within your project. For each component of your system, you should describe its purpose, interface, invariants, dependencies, and any other details users of the component should know.

You can use a program like doxygen for C++ and javadoc for Java to document your public classes, methods, and variables. These programs extract your comments written directly within the code and forms them into a collection of web pages. These programs are available on acpub or for download to your local machine.

To mark which comments should be used for such documentation, use a variation on block comments as shown below (note that the block starts with two asterisks)

/**
 * For this comment to appear in the web page documentation,
 * it must start with an extra star.
 */

README

You should create a README file. It is called a README because, with many pieces of software, there is such a file included which explains how to compile, run, and test the program. If the project includes multiple directories, it should also describe the purpose of each directory and how the files are organized, including what files are important for your project. Finally, it should include details about this how to customize the software for a new environment (i.e., a different directory, platform, etc.).

Comments?