Final group project

Proposal due: 2023-11-15 at 23:59
Status report due: 2023-12-06 at 23:59
Report due: 2023-12-20 at 09:00
Presentations: 2023-12-20 09:00–11:00


The project consists of a proposal, a status update, implementation, final report, and presentation.

The specific project is up to each group. However, it must involve a significant amount of effort—more than one or two people could do. All partners are expected to contribute to the implementation, the write-ups, and the presentation. Division of labor within each part is expected and good!

Any group member who does not participate in every part of the project will fail the course. No exceptions without prior approval from Prof. Checkoway.

The GitHub Classroom link for the final project is here. Do not create a team or accept the assignment until after you have formed a group.


The programming portion of the project must be (mostly) written in Rust and must use one or more crates from Otherwise, the specific project you choose is up to you.

Collaboration and coordination between group members must happen on GitHub. This means regular commits from all group members are expected. I strongly recommend you learn about pull requests and use them along with code review of each commit before it gets pushed to master. Using GitHub issues to track bugs that need to be fixed or features that need to be implemented is a great idea and is encouraged.

Project suggestions

Some project suggestions include

Previous projects have included games, scenes in virtual reality, programs communicating over a network.

Project proposal

A written proposal (750-word maximum) is the first step.

You should provide the following information

You should provide this information in narrative form (i.e., don’t just submit a list of questions and answers). You should use this as an opportunity to practice technical writing.

The proposal will be submitted via Blackboard by a single group member.

Status update

A maximum 750-word status update is due several weeks into the project. The report should summarize the project, including any changes in direction or scope from the proposal and why those changes were made.

The update should also provide a revised schedule with milestones. If you’re on-track, you should say so. If you’re not, explain how your revised schedule differs from the original schedule.

It’s completely fine to drop features if you find that you were overly ambitious in the proposal. Just explain how doing so will let you complete the project successfully.

The status update will be submitted via Blackboard by a single group member.

Final report

A maximum 1500–2000-word final report is due before presentations begin. This should include a standalone description of your project. You should describe what you accomplished and what you weren’t able to accomplish. Explain what the most challenging aspect of the project is. What was the most fun part?

Include anything else you think I should know.

The final report will be submitted via Blackboard by a single group member.


During the scheduled final exam time, you will give a seven minute presentation on the project. This includes five minutes of talking (among the four of you) and two minutes of answering audience questions. Every group member must speak.

If you’re able to do so, I strongly encourage you to give a demonstration of your project.

You should tell the class who you are, what you did, and how you did it. You can tell us what didn’t work or was almost working if you would like. If you do a demonstration, you should show off some cool features.

Public speaking is very hard. This is a low-stakes way to get some practice at it in a supportive environment.