Final group project

Proposal due: 2020-03-16 at 23:59
Status report due: 2020-04-12 at 23:59
Report due: 2020-05-13 at 11:00
Presentations: 2020-05-13 at 11:00

Overview

The final project is to be completed in groups of four. Prof. Checkoway will assign groups later in the semester based on students’ input.

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 groups have been assigned.

Requirements

The project itself must involve a significant new programming technology you haven’t used before. This could be using a new language (C, C++, C#, Rust, Go, Ruby, Haskell, JavaScript, etc.) or require significant use of a framework or library. Examples include Django for Python or some graphical framework for Java.

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. Trello boards might be useful to you too.

The code must contain tests similar to what has been done in the homeworks. You should find and use an appropriate test framework for your language. You must use Travis CI to perform automated testing.

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 due after groups are assigned. I will give feedback on the proposal.

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.

Presentation

During the last day of class, 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.