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.
-
Description of the problem
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.
-
Description of the Algorithm and Overview of the Program
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.
-
References
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.
-
Comments in your programs
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.
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.