CS 466/666 Final Project
For the final project, you will be asked to work on an open problem in Algorithm Design and present a survey about the problem and the outcomes of your investigations at the end of the term, or to present a survey of a topic of your choice (see some example topics below), and analyze one of the main algorithms in that topic.
The ideal project would be a problem/topic that you are excited about - this often brings one the most joy. If you need some guidance in picking a problem to present on, I will be happy to meet with you to hone into a problem of your liking.
The topics below are simply a suggestion. If you have another topic of your interest which is not covered here, I will be happy to try and work out with you a possible project on your topic of choice.
You can do your final project in pairs, but it is not mandatory. I will leave it to you to coordinate the pairing for the final project.
Timeline for the final project
- June 7th: project teams due
- July 5th: project proposals due
- August 13th: project reports due
- August 9th-13th: project presentations
Requirements for the final report
A good final report will be one which can summarize in ten pages:
- a good introduction to the problem being studied (why is it relevant/previous results/current state of affairs),
- a summary of your approaches,
- progress made (if you manage to make any, even in particular special cases of the problem - if no progress, I would only ask that you analyze/have a solid understanding of one of the current best algorithms that solves your problem)
- conclusion with open questions.
The limit to 10 pages is simply because this is a constraint that even us researchers have when submitting a paper to a conference, so it should be doable to you as well, plus it is great practice.
Plus I intend to read all of them, and this limit will put my reading to somewhere between 300-600 pages.
Note: the references need not fit on the 10 pages.
Requirements for the final presentation
You are required to prepare a live or a prerecorded video presentation of at most 15 minutes on the topic of your final project.
You will also have to schedule with me a 15 minute live Q&A period about your project, where I will ask you questions about your project and report. See dates above.
Grade rubric for final project
The final project will be worth 100 points, 50 of which will be allocated to the project report, and the other 50 will be allocated to the project presentation and Q&A.
For those of you pairing up for the final project, the project report is the group part of your grade. So I will need only one report per group.
The final presentation must be done individually, and you must demonstrate knowledge about the entire topic of the report.
Template for final project
For the final project, we strongly recommend you to write it in LaTeX. A template that you can edit accordingly is given here.
Research-based projects
I highly encourage you all to try your hands at an open problem! It is an amazing and enriching experience, and you may end up solving it by the end of the class!
For those of you who want to use this opportunity to start working on some research problems (perhaps as a pre URA or an URA), here are people that you can check out their webpages/try to reach out to, or resources at your disposal, for you to look for suitable projects:
- Algorithms and Complexity faculty webpage
- Combinatorics and Optimization faculty webpage
- CrySP faculty webpage
- UW URA webpage
A good strategy to find interesting open problems is to look at a particular faculty’s advanced graduate course’s webpage and see the topics they are interested in and the open problems in the area that they would be interested in. You can use your final project to get a deeper understanding in such an area where your interests match.
Possible Topics for Final Project
- Splay trees: alternative to splay trees
- Rank pairing heaps
- Zip Trees
- Power of Simple Tabulation Hashing
- Why simple hash functions work
- Monte Carlo approximation algorithms for enumeration problems
- MCMC approximation for Permanent of Nonnegative Matrices
- Sublinear Time Algorithms
- Randomized Numerical Linear Algebra
- Compressed Sensing
- Spectral Graph Theory
- Linear Programming rounding of NP-hard problems
- Extension Complexity of Polytopes
- Ellipsoid Algorithm
- Interior Point Methods
- Submodular Optimization
- Smoothed Analysis of Algorithms
- More on Multiplicative Weights Update
- Semidefinite Programming and Sum of Squares decompositions: Sum of Squares solve everything?
- Semidefinite Extension Complexity (i.e. spectrahedral lifts) of convex sets
- Boaz’s Sum of Squares lecture notes with open questions at the end
- Fleming, Kothari, Pitassi Semialgebraic proof systems & algorithms survey
- Laplacian Solvers
- PCPs and their applications in hardness of approximation, or in the blockchain
- Hardness of approximation and Unique Games Conjecture
- Interactive Proofs
- 3SUM problem and 3SUM hardness of various problems
- Fine-grained complexity of algorithms: how (a lot of) hardness for hard problems translates into hardness for easy problems
- Voronoi Diagrams (computational geometry)
- Lovasz Local Lemma and Moser-Tardos algorithmic version (and subsequent improvements)
- Distributed algorithms
- Cache-oblivious algorithms
- Quantum Algorithms: Shor’s algorithm for factoring, Grover search
- Algorithms for Coding Theory (error correcting codes, list decoding, compression, locally decodable/correctable codes, codes that handle deletions, etc)
- Algorithms for Number Theory (last I checked we still could not factor integers quickly :) ) a reference on number theoretic algorithms by Shoup
- Algorithms in Algebra and Algebraic Geometry Ideals, Varieties and Algorithms and Using Algebraic Geometry
- Algorithms in Cryptography: lecture notes by Pass and Shelat