Project #2 - Final Project

Overview

The main portion of a student's grade in this course is the final group project. Students will organize into groups of three and choose to implement a project that is (1) relevant to the materials discussed in class, (2) requires a significant programming effort from all team members, and (3) unique (i.e., two groups may not choose the same project topic). The projects will vary in both scope and topic, but they must satisfy this criteria. We will discuss this more in depth during class, though students are encouraged to begin to think about projects that interest them early on. If a group is unable to come up with their own project idea, the instructor will provide suggestions on interesting topics.

Each project is comprised of four tasks that are due at different times during the semester:

At a high-level, each project consists of three implementation tasks. The first is the actual implementation of the proposed idea. The second is the set of unit and regression tests that they will use to check whether their implementation is correct. The final piece is the evaluation of their implementation to determine how well the project performs.

Each group must use a single Github repository for all development.

Proposal Presentation (Due Date: March 10, 2025)

Each group will give a 5 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 should email the instructor a PDF version of their proposal presentation before class.

Project Update Presentation (Due Date: April 07, 2025)

Each group will provide a brief update to the class half way through the project on the the current status of their implementation. The update presentation should contain the following information:

The goal of this exercise is to make sure that everyone in the class is aware of what the other groups are working on and how far along they are in the process.

Project Design Document (Due Date: April 07, 2025)

As part of the status update, 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 code review and the final submission.

Final Presentation (Due Date: TBA)

During the scheduled final exam period for the course, each group will do 10 minute presentation on the final status of their project. This presentation should contain the following information:

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. Plagiarism will not be tolerated. See CMU's Policy on Academic Integrity for additional information.