Give an overview of the problem you're trying to solve, making it accessible to someone who is not familiar with the subject matter. Should borrow heavily from your problem statement.
List all client deliverables and project milestones. Include all documents, milestones (provide a one-line description of each), and final demo.
Describe the expected document changes, along with a history of revisions.
Describe how the team is organized (hierarchical, egoless, etc.), who is responsible for what roles, how information is communicated between team members, how often the team meets, how meetings are run, etc.
Briefly describe the management philosophy of the project, including the relative priorities among the requirements.
Describe dependencies among the team members and subsystems, assumptions about how team members will interact, and/or any possible constraints on their interaction.
List the possible risks of this project. For each, estimate by what date the status of the risk is expected to change (either it manifests itself or it doesn't), and provide a contingency plan. Identify the person responsible for monitoring the risk, along with how the risk will be managed. As new risks are identified, add them to this document.
Describe
Specify expectations for documentation. Describe how team members will document software, such as the standard comment header at the top of each file with the name of the developer(s), whether interface comments will be in the header or cpp file, etc.
Describe
Present the work breakdown structure (WBS), listing all the work that must be done for the project, organized hierarchically. Each task should be assigned to a specific person.
List any major interdependencies between the work packages.
Provide a detailed schedule for the work for the entire project, in the form of a Gantt chart, a PERT chart, or simply text (table). As a guideline, each task should be do-able by exactly one person in approximately one week.