Here are some guidelines for preparing your assignments. Note that for the early, smaller assignments, some of these steps my be brief. But later, and particularly when you are designing your own problem, you should give full documentation as described here.
You need to give a short definition of your application. For example, if you are trying to design, let say, an Airline Reservation System, then you need to tell us what an airline reservation system is and your approach to solve the problem. This is like a top-level design step.
Explain clearly the flow of data within your program, where
it originates, where it ends, for example:
"The user enters the data or read-in using function(x). Then it gets
processed by program or function(y), etc. Function(z) handles the
output and the database, etc. ..." or something similar. In addition
to this text description, you may provide diagrams:
An example diagram:
+------+ data +-----------------------+ output +----+ | user |--------->| program or subroutine |-------->| DB | +------+ +-----------------------+ +----+ ^ response | +--<--<------------------+Note that traditional control flow is not sufficient; the arrows in your diagrams may correspond to event callbacks or data streams, and that you may need to indicate multiple threads.
While you are describing the algorithm, you should also give an overview of the program structures; namely, what are the important data structures, classes and methods in your program.
Hyperlink all the references you used. For example, if you have used a method that was written or suggested by someone else, then, if possible, you need to provide a link to the page where you got it from. In addition, if you only partially have adapted someone else's code, you need to briefly tell us that.
In the source code you will need to have a title and a brief description of what each program or class does. Also, you need to have a short title for each class or method. Inside these titles you will briefly describe what the method does, and whether you have copied it from somewhere else or have written it yourself. This point is very important.
Also at the top of each class or method, you will need to define your parameters and return values (if any) as well as your local variables.
Use of the Java "documentation" comment form, and the javadoc program to generate HTML pages, is highly encouraged.
Modularization is quite important so try not to cram too many things in one method or class. If it gets really big, either divide it or have clear comments between the source blocks, i.e. before and after whiles, ifs, trys, etc.
Your code should be written for the Java 2 platform. It must not use deprecated features from JDK1.0, particularly JDK1.0 events. (These are not taught in class or in either book; you would only get them if you copy a program from somewhere else or use an environment that generates 1.0 code.)