The second major component of the course (primary being the homework), is the course project. The purpose of this component of the course is to give you experience with reading research literature critically, and experience with the process of crafting articulate technical presentations.
Your project selection must relate to the content of the course: it should involve large-scale machine learning or optimization. Due to the size of the class, the projects will be done in groups, each consisting entirely of undergrads or of grads. Preliminary group assignments will be posted to Piazza; students are welcome to change group membership as long as everyone affected agrees.
Groups will choose to do one of two types of projects: research projects, or pedagogical projects. In the former you will do original research related to the content of the course, either theoretical or applied; this research can be work you have already been conducting, or could be new. This research will be presented in a 20 minute presentation and a report written in the format of an ICLR workshop submission. Graduate students must select a research project.
For pedagogical projects, you will develop a 20 minute presentation covering a topic that is related to, but not covered, in the course; part of this presentation must consist of a freshly designed empirical evaluation of the method or result under consideration.The presentation should be accompanied by a problem set, with solutions, similar in difficulty to the ones assigned in class to test the understanding of students after watching the presentation. You can choose to survey algorithms in particular subfields of ML or optimization that we do not cover in class, or focus on a single paper in detail.
Potential project ideasHere are a few sample ideas to get your thoughts flowing:
- Select a recent paper from NeurIPS, ICML, ICLR
- Graph neural networks
- Online convex optimization
- Differentially private SGD
- Stochastic approaches to large-scale variational inference
- An optimization-focused topic in reinforcement learning
- Locality sensitive hashing
- An algorithm for low-rank tensor approximation
- Randomized element-wise sparsification of a matrix
- Compressed sensing (using the fact that random matrices satisfy the restricted isometry principle)
- Kalman filtering with applications in ML or optimization
- Hidden Markov Chain with applications in ML or optimization
- Metropolis-Hastings with applications in ML or optimization
Grading Rubric and Deadlines
|Task||Due dates (ET)||Percentage of grade||Details|
|Project selection||TBD||10||via email|
|Project progress report||TBD||35||via WebEx|
|Deliverables||TBD||20||via public Github repos|
|Presentations and Reports||TBD||35||In class|
See the "What is Research?", "Giving Talks", and "Reading Papers" slide decks from the 2019 CS Grad Skills Seminar to understand the expectations I will use to evaluate your projects.
Project selection will be via email communication: one person should communicate with me from each group. Groups must get approval to present the research or pedagogical topic that they have chosen. This means I need to be informed of your decision and have verified that it is an appropriate choice by the deadline. You must provide me with enough information to make this choice: for pedagogical topics, what specific paper(s) will you cover, and why does it relate to the class? Similarly, for research topics, what is the problem you will tackle, what techniques will you attempt to use, and why does it relate to the class?
Project Progress Report
All of your group must discuss your research/pedagogy in a group meeting with me by the deadline. Address all the points I raise below, to show that you will be able to give a quality presentation. Justify your choice of empirical evaluations and baselines. I require you to have a significant portion (50%) your experiments done so that we can discuss them, and the complete problem set if relevant.
Schedule this meeting at least the week before the deadline: I will not be able to meet with every group on the day of the deadline. If you have difficulties with your research or pedagogy, meet with me to resolve them well before your scheduled formal discussion.
See my suggestions on reading papers from the 2019 CS Grad Skills Seminar.
Code should be submitted in a single github/gitlab repo for each project. The experimental results presented in your talk must be easily reproducible given access to this repo.
- Well-documented cross-platform code for reproducing your experimental evaluations. Julia, Python, R, and C++/C are acceptable.
- Either include the data sets you used (if small enough), or provide a script that downloads and preprocesses them to the format that your code expects as input
- A pdf slide deck for your 20 minute in-class presentation, using appropriately typeset math and legible figures that addresses all of the points below.
- If your project is pedagogical, post the problem set here as well, clearly labeled.
- If your project is research-based, post the report pdf here.
Presentations will be made in class (20 minutes per group); each group member should speak during the presentation. See Prof. Anshelevich's suggestions on giving a good talk from the 2019 CS Grad Skills Seminar. Address the following points in your presentation to receive full credit for this portion. (This is for pedagogical projects, so adjust appropriately for research projects)
- Who are the authors, and the date and venue of publication?
- What is the problem that is addressed (pick one, if the paper addresses more than one), and why is it interesting or useful?
- What is the main result of the paper?
- Describe the result or algorithm and motivate it intuitively.
- What is the cost (time, space, or some other metric) of this algorithm, and how does it compare to prior algorithms for the same problem? (and similarly, for non-algorithmic results)
- What performance guarantees, if any, are provided for the algorithm?
- Give an accurate description of the analysis given in the paper: in simple cases this may be a tour through the entire argument; when this is not possible, focus on explaining a core lemma/theorem that supports the claim of the paper.
- Provide an empirical evaluation of the algorithm: compare its performance to reasonable baselines, and explore relevant aspects of the algorithm (its variability, sensitivity to relevant properties of the input, etc.). If presenting a non-algorithmic result and it is possible, provide some experimental evidence of its sharpness or lack thereof.