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