Project Proposal


The first step is for each group to create a development plan for their semester-long project. This plan is not meant to be a hard contract, but rather a way for each group to start thinking about what problems they expect that they will need to solve and what components they will need to build prior to starting development. This plan must cover how the group will implement their project. This includes what existing libraries or systems the project will use as a reference implementation.

Each group must also desiginate a liason that is responsible with coordinating with the other group working on the same project topic. Both groups are required to support the same public API. Thus, the two liasons must collaborate together to define this API and then provide a joint API specification.


The following items are due at the start of beginning of class.

API Specification

Each group must provide a design document that describes their project implementation. This document should contain the following information:

Students are free to ignore security and authentication concerns in their projects to limit the scope of their implementations. We also strongly encourage groups to reuse APIs from existing systems when appropriate. Please confer with the instructor if you have questions about feasibility of adopting existing protocols.

Design Document

Each group must provide a design document that describes their project implementation. This document should contain the following information:

These design documents must be written Markdown using this template. This part of the project is meant to encourage each group to think through their implementation before they start making changes. They will also serve as guides for future students in helping them understand what you did after you have left CMU and are potentially dead.

Each group should maintain their design document throughout the semester because you will need to provide an updated version for each project update and the final submission.


Each group will give a five minute presentation about their proposed project topic to the class. This proposal should contain the following information:

Your proposal should also provide three types of goals: 75% goals, 100% goals, and 125% goals. Think of these as the equivalent of a B grade, an A grade, and a "wow!" grade. The goals can be dependent or independent of the prior goals. Each group can meet individually with the instructor afterwards for additional discussion and clarification of the project idea.

Each group must email the instructor a PDF version of their proposal presentation before class.

Collaboration Policy

WARNING: All of the code for the core portion of your project must be your own. You may not copy source code from other sources that you find on the web without discussing it with the instructors first. Plagiarism will not be tolerated. See CMU's Policy on Academic Integrity for additional information.