Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

For the final project, you will design and complete an original data programming project that demonstrates your mastery of course concepts. You’ll identify your own research questions, find and work with a dataset of your choice, and produce a data-driven analysis, visualization, or interactive application. Your project proposal will outline your research questions, motivation, dataset, chosen challenge goals (at least 2 from the provided list), methods, and work plan. This option allows you to explore a topic you’re passionate about, apply skills you’ve developed throughout the quarter to new material, and create something entirely your own from the ground up! You are encouraged to work with up to 2 partners for your project.

For Part 1 of the Final Project, you will propose a data analysis project to the course staff. This can be almost anything that you choose. You might select a project from your field of study, your extracurricular interests, government or public policy, or elsewhere. Another good source of ideas is repeating an analysis that you read about in the popular press or in a scientific paper — usually you will do a simplified version of the analysis. We are just looking for you to show that you have a better understanding of how data works and the kinds of questions you might want to answer!

The goal of the project proposal is for you to describe your idea in enough detail that the course staff can evaluate whether it is an appropriate project. You are able to work in a group of up to 3 people total. The final project is composed of three main parts, a proposal, an exploratory data analysis, and the final report/code. These cannot be submitted late and cannot be resubmitted through the resubmission process. Once the deadline for a project part passes, you will no longer be able to make further submissions for that part of the project.

Requirements

The following sections describe some requirements for your proposal and project more broadly. Your proposal will probably be about 1-2 pages long, but it is acceptable for the proposal to be longer or shorter as long as it sufficiently covers all of the required sections. Do not worry too much about the length, you should just focus on conveying the required information in as much detail as you think is relevant. Submit your proposal as a PDF file. (In Microsoft Word, you can choose “Save As” to save your document as a PDF file. In Google Docs, you can choose “File”, then “Download” and save your document as a PDF. Do not turn in a Word document, ODT, or plain text file.)

Proposal Format

Your project proposal should include the following sections:

Dataset

You are not allowed to use a dataset that we have used in class as the central dataset of your project. You can use one of our datasets to add on to a part of your project, but it should not be the central focus.

Your report must include simple, clear, unambiguous instructions that anyone can follow to download the data themselves. You should not rely on the staff to be able to “figure out” how to access the data, you must provide instructions for us. If the data is not publicly available or requires an account to log in, then you should make it available to course staff or include it with your assignment submission. One way to do this is to host your dataset on Dropbox or Google Drive and provide a link to this in your report. If the full dataset is too large to download, then provide a subset of it for the course staff to experiment with.

Do not use a dataset that cannot be shared with the course staff, such as one that contains confidential medical information or intellectual property. Do not manually perform any data cleaning steps — all data cleaning should be done programmatically, by Python code that you write.

Challenge Goals

Challenge goals help us to define expectations while still offering flexibility for you to design your own project. Meeting 2 or more challenge goals will likely require writing at least 120 lines of Python code. In order to qualify for a challenge goal, you must experiment with something not explicitly discussed in the course. Here are the challenge goals you can choose from. We provide some examples for some of the bullets that are not meant to be exhaustive lists.

Challenge Goal Requirements

Additional requirements for each of the challenge goals listed above are as follows. Your challenge goals must meet these minimum requirements in order to be counted.

Advice

The following sections have some advice on dataset sources and libraries that you might want to look into. We also provide some more context for what we will be covering for the rest of the quarter.

Sources of Data

The best approach is to start with a problem that interests you, and then look for data. Google will be your friend for finding a dataset. Alternately an equally valid approach involves, starting with a dataset that looks interesting and designing questions that interest you around that data. Here are some possible data sources, but many more exist:

Later in the course (if you are reading this close to the time Project Part 1 releases), we will explore geospatial data to create maps. If mapping sounds interesting to you, feel free to use any of the class datasets below! (Again, it’s OK if you’re not completely sure how to use the data yet; none of these datasets will be the focus of your project anyway!)

Libraries

You are free to use most any Python library you find that will be useful to you, especially the ones we have learned in class this quarter. If you know of a library you will use at this time (not required for the proposal) please mention it in your proposal. Below, we list some libraries you might want to look into for your project since students have found them useful in the past:

You are also encouraged to take advantage of the libraries we learned this quarter to help you on this project (but they won’t count as a new library for that challenge goal). In the list below, we include a list of all libraries we have (or will) discuss in depth in CSE 163.

Development Setup

One of the challenges with developing your own project is that you need to make sure you have the computing resources you need. There are some excellent online options that let you experiment with your code in a notebook, but they usually have limits on what dataset sizes or libraries you can use.

You do not need to write code for the Project Proposal, but you and your group should explore your development setup earlier than later to make sure it is appropriate for your project. Make sure that you are able to run and edit Python scripts, not just Jupyter Notebooks.

For a local alternative to JupyterHub, we recommend using VSCode. You can follow along with our software setup guide for instructions on how to install and setup VSCode, along with Python and other dependencies on your local machine.

Working Collaboratively

If you are working in a group, you will likely want to work collaboratively on your code, whether that be at the same time, or asynchronously at different times. Regardless, we recommend setting up a Github repository for your project’s code. Using Git allows you to seamlessly collaborate with others, while maintaining a reliable version history of your entire project, file by file! Other online alternatives are listed below. Information on how to set up a repository is also provided in the software setup guide. We’ll cover Git and repositories in class during Week 5 of the course.

Online Prototyping Tools

Note that the following tools are great for prototyping parts of your project, but you should be using your local Python installation to write runnable Python scripts that can handle data of any size.

Example: Too Easy Project

To give some context for why we have these challenge goals, we provide an example project proposal that is way too simple.

Consider a project proposal that wants to use the following CSV dataset about salaries.

idagesalarygenderlocation
142110000FSeattle
22356000MKenmore
31820000MSF
...............

Suppose the project asked the following research questions:

  1. What is the average age in the data?

  2. How does salary relate to age?

  3. What is the average salary by gender?

Is this a good project? In general, it can be a bit hard to say since you can’t base it just on the number of research questions. Instead, you need to think about their depth and how much work would be necessary to answer them. This project ends up being very straight-forward to do in about 4 lines of code! One way to tell this project is too easy is it doesn’t meet any of the challenge goals! As we mentioned before, to adequately meet the challenge goals you will probably be writing at least 120 lines of Python code! That might sound a lot, but that’s already fewer lines than most of your homework assignments!

df = pd.read_csv('data.csv')

# Question 1: What is the average age?
df['age'].mean()

# Question 2: How does salary relate to age?
sns.relplot(x='age', y='salary', data=df, kind='scatter')

# Question 3: What is the average salary by gender?
df.groupby('gender')['salary'].mean()

It’s definitely okay to have some easier questions to build up a narrative in your report, but we are looking for you to challenge yourself on this project!

For some example reports and slides, please refer to our past project gallery. Note: Some of these projects were before we added challenge goals and changed the spec so there might be some inconsistencies between their reports and what we are asking you to do.

Grading

The project proposal will be graded for satisfactory completion of the written requirements and demonstrated effort. You will receive full credit for this part of the project as long as you have completed all the requirements and have demonstrated genuine effort in completing them.

Submission

Your project proposal is due on Sunday July 19 at 11:59pm, Seattle time. Submit your proposal as a PDF file on Gradescope. Remember that you cannot submit any part of the project late and you can not use the resubmission process for take-home assessments to make submissions after the due date.

Submit your Part 1 as a PDF file. Do not turn in a Word document or plain text. Only one group member needs to submit your proposal on Gradescope and should use Group Members functionality to add the appropriate partner if you have one. If you want to learn about how to add Group Members on Gradescope, please see instructions here. Group members that are not listed in Gradescope by the due date will be marked as not submitted.

Submit Proposal