Final group project
Due: 2020-05-05 at 23:59
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.
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.
Some project suggestions include
- Program a microcontroller (like an Arduino) to use some sensors and lights/actuators to do something (you can test with a simulator)
- Implement a game (e.g., Mancala, checkers) using some game building framework (SDL, PyGame, Unity, Unreal, etc.)
- Use OpenCV to do something with computer vision
- Implement some machine learning algorithms (like k-means or k-nearest neighbors) and run them on some interesting datasets and do some visualization
- Build an interactive website
- Make some interactive art (audio and video)
Previous projects have included games, scenes in virtual reality, programs communicating over a network.
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
- What are you doing?
- How are you doing it?
- What do you need to learn to do it?
- A proposed schedule with milestones (the status update will discuss the milestones so you might want to track these on GitHub.
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.
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.
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 last two days 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.
Attendance for both days of presentation is mandatory. Attendance will be taken both days.