Assignment 9: Final Project
Overview
In this assignment you will have a chance to customize the course to meet your learning goals. You can work on this project individually or as a member of a team.
Areas of Investigation
For your project, you should choose one or more of the following areas of investigation. In terms of scoping, this should equate to about 30 hours of work (not including the time to come up with the project topic and write the proposal).
- Learn about and (likely) implement a new algorithm. You could choose an algorithm that has been known in the literature for a while: All Pairs Shortest Path, Ford-Fulkerson for maximum network flow, Page Rank, Fast-Fourier Transform, Viterbi Algorithm for Hidden Markov Models, K-Means clustering, Policy Iteration for optimal planning, Simplex Method for linear programming, etc. You could choose an algorithm from a research paper of interest. You may find that to meet the required scoping of the project, you learn about multiple algorithms for a similar problem.
- Apply an algorithm we already learned about to an interesting problem. Take one of the algorithms you’ve already implemented and try it on a non-trivial problem.
- Take one of the assignments further. You might try various optimizations to your code to improve runtime (make sure to pair this with benchmarks that show the change in performance). You might want to implement additional features or variants of your algorithm (e.g., additional sorting algorithms).
- Do some research to determine how a particular algorithm is being applied currently or has been applied in the past.
Deliverables
Project Plan (5 points)
Turn in a project plan that lays out your plan for the project. Clearly specify the following components.
- Project description: what is your project about? Please be as specific as possible. You should aim for at least 2 paragraphs.
- Team: who is on your team (or let me know if you are soloing).
- Learning Goals: what are you hoping to get out of this project to enrich your learning in this class.
- Deliverables: what deliverables will you create, and what do A-quality, B-quality, and C-quality versions of each deliverable look like.
- Project schedule detail what you are aiming to have done by the following dates (11/20 and 12/8). If any of these are stretch goals, please indicate this. You will receive a grade based on your ability to reach your (non-stretch) goals.
Check-in 11/20 (5 points)
Based on your project plan, we will check-in during class on 11/20. If you met your goals for this check-in, you will receive full points. If you did not meet your goals, please provide a justification. I will assign a grade based on whether your progress up to this point in the project is reasonable.
Check-in 12/8 (5 points)
Based on your project plan, we will check-in during class on 12/8. If you met your goals for this check-in, you will receive full points. If you did not meet your goals, please provide a justification. I will assign a grade based on whether your progress up to this point in the project is reasonable.
Final Project Presentation (2 points)
Prepare a presentation of about 5 minutes (not including time for questions) on what you did for the project. Submit your slides on Canvas. If you are a larger team, you might take a little more time. If you are a solo project, you might take a little less time.
The assessment is either full or no credit (depending on whether you did the presentation or not).
Other Deliverables (25 points)
You are required to include a brief summary of what you did for the project and an orientation to any other deliverables (e.g., a listing of where your code lives, links to a website / video, etc.). Your summary should also provide clear instructions so someone from the class can learn something from your project.