The CS 335 course project is your chance to apply state-of-the-art machine learning methods to an application that you care about or to explore some area of machine learning more deeply than we covered in class. An ambitious project may try to innovate in some area of ML.
You may work by yourself or in groups of up to three students for the project. (But more is expected from larger project groups.)
Here are some possible types of projects:
The first and most common is an application project. Pick an application you are interested in (ideally, one you are passionate about!) and try to solve it with ML—either methods we learned in class or ones that you discover elsewhere.
The second is an exploration project. Pick an area of machine learning or a machine learning algorithm that we did not cover in class and explore it in depth. This should be a significant expedition into uncharted territory for all team members (i.e., don’t “explore” something you already know). It will likely involve:
A main difference between this and an application project is that the experiments would be designed to understand and test the method and not solve a particular application. For example, imagine that you just invented the method and need to demonstrate its effectiveness. This might involve reproducing results from a research paper.
An ambitious project may try to innovate in some area of ML. A good way to approach this is like an exploration project—examine some existing state-of-the-art method and then try to develop a novel extension or variant.
Your project can also cross these boundaries. If you have any doubt about what you want to do or would like a suggestions, I highly encourage you to talk to me about your project!
The most fun and exciting projects are likely to come from applications you are passionate about. For example, if you are involved in another research project or a hobby that could somehow benefit from machine learning, these could make great projects.
You may choose to explore a purely theoretical area of machine learning (we did not touch on these areas in class, but they exist).
One way to gain inspiration is to look at recent papers from the main machine learning conferences (ICML and NIPS):
You can see a long list of projects from the Stanford CS 229 class here:
(That class is somewhat more advanced than ours and the project has a longer timeline, so you will want to calibrate your expectations based on those two facts.)
Here are some resources that may come in helpful or inspire some ideas for your project:
There are many other sources of free implementations of machine learning algorithms. If there is something in particular you are interested in, please look around and ask me.
The proposal is due Friday, March 15 at noon and should be submitted as a post on Piazza. I encourage you to post the entire proposal publicly. I will also accept proposals posted privately to me, but these should be accompanied by a shorter public post describing your project plan at a high level. (Rationale: you can learn and get ideas from others; this will make all projects better!)
It should be the equivalent of 1-2 pages and include the following:
In the description, please address topics that will allow me (and classmates) to judge the feasibility, such as:
You may not know the answers to all of these questions, and some may change. That’s OK. This is not a contract, just an initial plan that should be as detailed as possible to help guide your work and so I can give you feedback.
After the proposal, you should submit weekly status reports on Piazza by Friday at noon. These will be public posts. If for some reason a public post absolutely does not work for you, let me know. The weekly status reports should chronicle the progress you’ve made and the issues you have encountered.
A recommended format is as a bulleted list addressing each of the following:
You could have up to a few sub-bullets for each category.
By ~early April these should start including concrete results.
The purpose of these reports are:
Final presentations will take place during the last one or two class sessions or possibly during a special presentation session around the last day of classes. The format is still to be determined. These will either be very short oral presentations (with slides) or poster presentations.
The final report is due at the end of finals period: Tuesday, May 7 at noon. It can, of course, be turned in earlier.
The report should be 5-8 pages long and describe your project in detail. It should be roughly organized like most research papers:
Submissions instructions will be provide here closer to the final due date.
Large sections of this document are based on an older version of Stanford’s CS 229 project guidelines.