The goal of the final project is to gain experience with the entire scientific process: motivation, hypothesis development, data collection/cleaning, algorithm development/application, evaluation of results, interpretation, and conclusion. Below I’ll describe the main components your project should include and provide a few dataset resources. You are welcome to choose a non-data-driven project (options below), but make sure your proposal is very thorough about what you will do in this case.
This document describes the project proposal and getting started on the project - there will be separate instructions for the oral presentation and exactly what to submit at the end of the semester. The project is worth 15% of your overall grade.
For the oral presentations, each group will have roughly 8 minutes to speak.
You are required to work in pairs for the final project - group work is an important component of Computer Science (and other fields!). This in an opportunity to practice collaboration and creating something bigger than each person could individually. If you would like a random partner, please email me. You are welcome to work across lab sections (but we will still have required lab the last few weeks of classes and it would be ideal if both people could come to the same lab). Note: if you really prefer to work individually or in a group of 3, requests will be considered on a case by case basis (please email me early about this).
The goal of the proposal is to help you start working on your final project and assembling the different resources you want to use (literature, software, data, etc). Broadly, your project should include:
For the proposal, briefly outline each of these sections (details below) in a 1-page PDF document. Submit your proposal to me by email and cc your partner. I will provide brief feedback in the order I receive proposals. Include a title and both partner names.
What dataset will you use for this project? Regardless of what you’re interested in, there is probably a dataset that is related. Please be as specific as possible - don’t assume your ideal data is available until you’ve actually downloaded and viewed it. Include a reference/link to your data in your proposal. Here are a few databases to get started. Note that I do not necessarily have direct experience with most of these datasets. After you download the data, make sure that you can actually view it, that you understand the features and label (if applicable). What is n
? What is p
? Make sure the dataset includes enough examples that you could reasonably learn from it or analyze it (I would say n<100
would be concerning).
Kaggle: Wide variety of datasets (may need to create an account).
UCI Machine Learning Repository: Also contains a wide variety of datasets (options on the left allow you to search by task, attribute type, etc which can be very useful).
ImageNET: Large database of images (larger than CIFAR-10, which is also an option).
Climate data: There are a number of government and climate research sites with data. Here are a few:
Wikipedia Data List: Up-to-date list of datasets organized by category (may or may not be freely available):
State-wide data: Datasets on a variety of topics. Most if not all states have their own website. Here are a few:
1000 genomes (human DNA data): This specific dataset contains DNA data from humans around the world, but there are many other datasets from other species.
What software/methods will you use for the project? You can write your own methods, use your lab implementations from class, or use existing software, but there should be some programming component. You could compare two existing methods, or compare your own method to an existing method. Even if you’re planning to use existing software, there will likely be a significant programming component since you’ll have to get the data in the right format, learn how to run the program, and evaluate/visualize the results.
If you are using any existing software, include a reference.
Why is this an interesting or relevant topic? You could talk about your personal motivation for this topic, or why it would be interesting to investigate in general. What scientific question are you trying to answer? Briefly describe a hypothesis about the results you expect. (e.g. “I think Naive Bayes will be more accurate than logistic regression on this dataset because [insert reason].” or “I think [insert feature] will be the most informative feature because [insert reason].”)
What type of results do you expect from your project? How will you evaluate and interpret the results? At least one visualization (figure) will be required for each project.
Include a list of at least two references (Google scholar is a great place to start). If you would like paper recommendations based on your topic, let me know. For the reference format, include:
Example:
Langmead, Trapnell, Pop, et al. “Ultrafast and memory-efficient alignment of short DNA sequences to the human genome.” Genome Biololgy (2009).
If your references include online references (software, datasets, etc) or books, feel free to modify this format (e.g. title of site and link is usually enough if there is not an obvious author).
Implementation based. If you would like to explore a large-scale software project, that is a great option. Ideas: you could implement a research paper that does not have code available online. Or you could implement an algorithm we have talked about in class but used existing software for (e.g. PCA). If you pursue this option, this software should be something you write from scratch yourself as part of this class, not something you have written before.
Theory based. I am also open to a more theoretical/mathematical project that does not involve data or substantial coding. If you have a concrete idea/plan for such a project, let me know. This option is fairly open-ended, but you should be creating something new or finding a new way to interpret complex/vague theory from the literature.
Reproduce a research paper. Another option is to reproduce the results and figures of an existing research paper. This is often not an easy task, but very illuminating into the data science pipeline. Please get in touch early with a specific paper if you’re interested in this option.
Simulate/create data. A variation of the default project format would be to simulate or create your own data. In some areas of biology, physics, robotics, etc., simulated data is a common way to test new algorithms. If you’re interested in this approach, include some details in the proposal about how you will add this step.
I would recommend submitting your proposal as soon as possible so you can get feedback and get started. To get started, accept the Final Project assignment on GitHub Classroom. Your repository should include all the code you write for the project. Only include data if the datasets are very small (e.g. a fraction of the original data or test examples). The repository should also include your “lab notebook” (see details below) and eventually your slides for the presentation. Summary of what should be on git:
README.md
)There will be weekly project check-ins during lab.
Instead of a formal writeup, you should keep a lab notebook throughout the project. I actually keep an online lab notebook for all my research projects. It helps me remember what I did last and also tracks the time I’m spending on each project. I also use this same document to keep a list of TODOs.
You and your partner should share a lab notebook so you can keep each other updated about your progress. I’m not going to grade this part formally or read every entry - just check that it’s there and looks reasonable. It is more for you to keep track of the project.
Here is an entry from my own work:
Sara: 03-07-18 (2hrs)
Materials by Sara Mathieson.