Project 4: Final Project

CS112 Final Project Guide

Description

CS112 culminates in a final project. This project is to be completed over the last weeks of the semester in groups of (usually) 2 students. The goal is to demonstrate your understanding of the concepts we’ve learned over the semester and to have some fun exploring a computer science project of your choice!

The most important thing is that your project should be something that you care about or enjoy working on. We have provided a few suggestions, but you can also do a project of your choice. We want to help you design a project that makes you happy.

Do you enjoy baking? Try a project that makes baking easier or more fun. If you like music, you could try a project related to music. Maybe you like gaming…you could implement a (SHORT) text-based game; in fact we’ve considered assigning that as a project before!

Timeline

Project deliverables

You should submit all code files that you wrote for your project, as well as any test files you wrote, along with a README. The README should present a brief summary of your project. We will use your README as a guide to understand your code.

The README should not be long. Write at least 2 sentences for each segment, but do not write more than 2 paragraphs for any of them. It should include the following sections:

Goal

This section should describe, in your own words, the goal of your project. What are you trying to accomplish? This section can include things you wanted to do but weren’t able to complete.

Implementation

This section should describe the actual implementation of your project. What design decisions did you make? What data structures did you use? What functions, classes, and methods did you develop, and what were they for?

Results

This section should describe the results of your hard work. Did you accomplish all of your goals? Feel free to include any measurements you did, example program inputs and outputs, or screenshots. This is also the place to tell us about testing: how did you ensure that your code is correct?

Project presentations

We will do project presentations in person or over Zoom – whichever you prefer. Doing a presentation is mandatory. The presentations will be informal (i.e., don’t make slides) – you will just be walking through your project with Tim (and possibly one or more TAs). All group members should be prepared to answer questions about any aspect of the project. Presentations will be scheduled for 20 minutes each, but should only take 15 minutes.

Project suggestions

We have come up with a number of suggested projects. You can implement one of these ideas as written, implement a modified version, or work on some other project of your choice. Regardless, we recommend looking over the suggestions to get a sense of how to scope your project.

We’ve included a suggested group size range for each project. We expect more from larger groups. If you work in a group of 3 on a project designed for 2 people, you should extend it in some way; conversely, if you work in a pair on a project designed for a group of 2, you should feel free to scale it back somewhat.

All of our suggestions are extensions or modifications to one of the three other course projects. Remember you do not have to do one of our suggested projects - feel free to design one of your own. We encourage self-designed projects!

Project 1 extensions

A novel dataset (2 people)

Use your classifier from project 1 with a new dataset of your choosing (one from another class, or collected via a web API). The bulk of this project will likely consist of reformatting the data so that you can use it with your classifier.

Testing project 1 (2-3 people)

In Project 1 you built a genre classifier, but didn’t evaluate its effectiveness. For classifiers like the one you built in Project 1, a standard way to evaluate accuracy is to divide your data into a “training set” and a “test set.” Instead of computing your tf-idf model from all of your data, you’d compute it from a subset of your data–say, 80% of the songs; this is called the training set. You’d then measure its accuracy on the remaining 20% of songs; this is the test set. You’d need to calculate how often it identifies the correct answer, and compare your results against a reasonable baseline (say, always guessing the most common genre).

Project 2 extensions

Local temperatures (2 people)

In the Project 2 climate simulation, each country’s temperature was a simple function of the total carbon in the atmosphere. For this project, you could add a second type of pollution that affects polluting countries more than other countries. You’d need to track each country’s emissions separately and calculate each country’s temperature based on both the global carbon total and the local and global totals of this new molecule. You should implement a new policy or two that interacts sensibly with this new molecule. Take advantage of polymorphism!

Project 3 extensions

Scraping a different site (2-3 people)

In project 3, you extract data from Craigslist. Choose another site with interesting data that’s otherwise difficult to access and write a program to extract those data. Depending on the complexity of the site, this project could be appropriate for different group sizes; a group of three students could consider combining data scraped from multiple websites.

Something Completely Different

Do you have a dataset that can be represented as a tree, maybe from your other coursework or independent research? Could you simulate some natural phenomenon in code? Do you have a hobby that could benefit from a particular computer program? We highly encourage final projects related to your own interests – if it involves writing a program to solve a problem, it’s probably a great project!

Content by Doug Woos, Tim Nelson, Robert Lewis, Ben Ryjikov, Ashley Chung, and Annabelle Gao

Special Thanks to Doug Woos and Kathi Fisler for designing previous iterations of this project.