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 aobut 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, November 7 Monday, November 10 at midnight, and will be submitted on moodle. It should be 1-2 pages and include the following:
In the description, please address topics that will allow me 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.
The milestone is due Wednesday, November 26 at noon. It should be 3-5 pages and describe the progress you have made so far, and briefly describe what you still plan to do. You can write this as a draft of the first several pages of your project report, which you can then reuse for the final report.
The purpose of this is to make sure you are on track with your project and uncover any major problems or need to change course as soon as possible.
Submit the milestone here: https://moodle.mtholyoke.edu/mod/assign/view.php?id=181154.
Final presentations will take place on the last day of class, Tuesday, December 9. 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, December 16 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 Stanford’s CS 229 project guidelines.