1. Personal identifiying information. (name, class, ...)
  2. A high level description of the problem.
  3. A list of questions about the problem.
  4. A description of the problem's input/output.
  5. A program decomposition, showing how the various modules will iteract.
  6. A set of test cases, both input and output
  7. Algorithms for the main and all sub algorithms required to solve this problem.