Homework Guidelines

Homework is due at midnight of the date stated.

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.

  1. Description of the problem

  2. 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.
     
  3. Description of the Algorithm and Overview of the Program

  4. 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.
     

  5. References

  6. 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.
     
  7. Comments in your programs

  8. 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.