CS 65 Final Project

The final project is an opportunity to work on a creative idea and write a full program from scratch.

Purpose: The purpose of tackling a project like this in this course is to demonstrate that you have met the learning objectives of the course, which are

  • Understand the fundamentals of CS
  • Design, document, develop, test, and debug algorithms in the Python programming language
  • Recognize common data structures and how to use them to efficiently solve problems
  • Solve computational problems by breaking them into manageable parts and synthesizing them into a coherent whole

What it's worth: 20% of your overall grade for the course

Due Date: Tuesday, December 14th (end of the calendar day) - we will not meet during finals week.

Topic: You may choose to create a program that does anything you want as long as it meets the requirements listed below. Pick something that is of interest to you. This could be an opportunity to do more with something we didn't previously turn in code for, like images or GUIs. Or, you could choose to create a game or a useful productivity application. You could also look for interesting data sets to work with, and read them in as files that you allow the user to interact with.

If you're stuck on thinking of ideas, I recommend browsing data set and thinking about how you could write a program that uses that data in some useful way. Check out the following two links for good starting places to look for data (which is often available in either csv or json format)

  • https://www.kaggle.com/datasets - interesting data sets used by the data science community for fun, learning, and competition - even though it is analytics-focused, there are plenty of data sets you could build cool applications around
  • https://www.data.gov/ - publicly accessible data collected by the US government

Requirements: Your project must include the following things

  • Your program must be made up of several functions (and classes are ok too). Parameters and return values should be used where appropriate.
  • Your program should include comments - at a minimum a docstring for each function/method
  • Your program should use at least one list or dictionary in some meaningful way.
  • Your program should include at least one of the following in some meaningful way:
    • File input and output
    • A GUI
    • A class definition

Self Evaluation: Your code should include a big comment at the top of the file where you write the following things

  • Description: A brief description of what the program does
  • Sample runs: Some sample runs that shows off how it works - just copy and paste from the shell (if you program is a GUI or otherwise visual, you may instead attach some screenshots, but describe what the screenshots show in writing)
  • Sources: Confirm that the overall project is your original work and that you haven't taken significant amount of code from some other source (if you take bits of code here and there and work them into your overall project, that's ok as long as you cite the sources) - list any minor sources here
  • Functions: Briefly describe how you broke up your program into several functions and/or classes. Do some of them use parameters and return values?
  • Data Structures: In what way does your program use a list or dictionary?
  • Recent Topics: In what way does your proggram use file input and output, a GUI, or a class definition?

The self evaluation comment should be formatted something like this:

"""
Name:
Date:

Description:

Sample runs:

Sources:

Functions:

Data Structures:

Recent Topics:

"""

Grading: You will turn in your .py file on codePost under the Final Project assignment. You will earn up to 5 points for each of the following things

  • Functions and/or classes are used with appropriate parameters and return values
  • All functions and methods include a docstring, and the required self-evaluation comment is complete and included at the top of the file
  • A list or dictionary is used in some way that is important to the program
  • The program includes file input and output, a GUI, or a class definition

Frequently Asked Questions

This is worth a big part of our grade, so does it have to be a really big project (i.e., lots of code)?

No. It can be something simple as long as it covers everything listed in the requirements. You can show you've met the learning objectives with a relatively small amount of code. You can think of the code you wrote for the Sentiment Analysis labs as a good size comparison - that included many of these things - several functions, docstrings, and files.

Can I find a tutorial on a website or YouTube and use the completed code as my project?

No. This should be something original that you build from scratch. It's ok to use sources to help you complete parts, but you should cite them and make sure you integrate everything into a coherent whole.

What if I used a lot of code that I got from a source? Should I still turn it in?

Yes, you should still turn it in. As long as you cite the source, it won't be considered academic dishonesty. However, you can expect to receive less credit because you haven't demonstrated the learning objectives independently.