Project Update #2
Overview
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:
- An overview of the development status of their project as related to the goals discussed in the initial proposal.
- Any information about whether the groups' original plans have changed and an explanation as to why.
- A measurement of the current code coverage of the tests for your implementation.
- Color commentary about any surprises or unexpected issues that the group encountered during coding.
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. Since this is the last update before the final presentation, each group should provide a plan for how they will benchmark and evaluate their implementation. In particular, each group should include a discussion of how they will compare their project against the rival group (excluding the optimizer projects).
Each group must email the instructor a PDF version of their proposal presentation before class.
- Release Date: Feb 28, 2024
- Due Date: Apr 03, 2024
Deliverables
Each group must email the instructor a PDF version of their proposal presentation and updated design document before class.
The project design document should be an updated version of the proposal design document and should contain the following information:
-
Overview: A description of the component you are building for your project.
-
Architectural Design: An in-depth overview of how you implemented your project. Explain the input and output of the component, describe interactions, and break down the smaller components, if any. You should also describe what (if any) configuration knobs you have added to your component or expect you will need in the future.
-
Design Rationale: An explanation on why you chose the given design. Your justification should discuss issues related to (1) correctness, (2) performance, (3) engineering complexity / maintainability, and (4) testing. It should also include a brief discussion of the other implementations you considered and why they were deemed inferior.
-
Testing Plan: An outline for how you are testing that your implementation is both (1) correct and (2) performant. You should both describe the short unit tests and long-running regression tests. Some portion of your testing plan must also use your project's public API. Thus, you can share testing infrastructure with the other group implementing the same thing.
-
Trade-offs and Potential Problems: Describe any conscious trade-off you made in your implementation that could be problematic in the future or any problems discovered during the design process that remain unaddressed (technical debts).
-
Glossary (Optional): List any new concepts or unintuitive/non-standard names that you have added to your system.
You must write your project design document in Markdown using this template. This document will allow you to keep track of your progress and serve as a guide for future students in helping them understand what you did after you have left CMU and are in jail.
Collaboration Policy
- Everyone has to work in a team of three people for this assignment.
- Groups are allowed to and strongly encouraged discuss the details about the project with others.