Final Project

This is your chance to show off all of the computational thinking skills you have learned this quarter in a project of your choice and design! You can design almost anything you want to produce something that is interesting, useful, and challenging. Think about the vast amount of knowledge you have gained and apply it in a fun way - this is your chance to challenge yourself and see how far you can go!

You may choose to start with one of your Creativity Assignment projects, but must make significant extensions to it. There are sections below for brainstorming ideas and examples of past projects.

Working in a Group

This project is to be completed in groups of no more than 2. If you plan on working with a partner, please email the instructor ahead of time so that we can set up groups on Canvas so that you and your partner will only need to submit one copy of each part of this assignment.

Part 1: Project Design Document (Due 3/2)

In short, you should convince us your project will be awesome and worthy of an A! It is in your best interest to discuss your project idea(s) with a TA before starting on your design document.

Your design document must include the items listed below:

  • Name(s) of student(s).
  • Creative title of the project.
  • A paragraph introducing the project.
  • A paragraph describing the user interaction (mouse clicks, key presses, etc.).
  • Explain how the program starts and ends (or win/lose if a game).
  • Explain how the program will restart (automatically? with a button click? this should NOT require closing and re-running the program).
  • A storyboard that clearly shows different scenes that will happen over time. These can be rough sketches, but should give us a clear idea of the flow of your project (we are expecting at least 4 boxes for your storyboard).
  • Describe the hand-created assets you will use in your project. You must have at least 3. These could include a background image, a start screen, characters, items, etc. – it's totally up to you. You can create the assets using Processing functions or other programs (e.g. Paint, Illustrator), but they must be made by your group and not found on the Internet.

This document should be much more detailed compared to your Creativity Assignment. Feel free to reach out to us if you are having trouble or if you are not sure how much detail to provide.


  • Make sure that your document addresses ALL of the bullet points above.
  • Make sure you include a storyboard of at least 4 different scenes.
  • Submit your design document to the .
    It is recommended to submit as a single PDF, but you may submit multiple files of different types if necessary.

Part 2: Project Update (Due 3/7)

This update will be done in person during lab section on Thursday, March 7. Make sure you attend lab that day! Be prepared to quickly remind your TA what your project is about and then describe/show your progress so far, including current difficulties.


  • There is no submission for this portion, but you will need to show significant progress to your TA in order to be checked off.

Part 3: Project Submission (Due 3/15)

The final project submission will consist of the three parts described below. All of these parts are due at the same time and should be submitted on Canvas.

  1. Program Files: A ZIP file containing all of the necessary files to run your project. This should include your Processing files (.pde), imported image files (.png, .jpg), and imported data files (.csv). Please include the names or initials of your group members in the file name.
  2. README: This should be included in the ZIP file described above. This is a document (.pdf, .txt) that is essentially a manual for your project. The README is directed to any user who is looking at your project for the first time and wants to know what the project is about, how to interface with/use the project, and the purpose of the various variables, data structures, and functions. In short, talk about how your project works on an abstract level in terms of programming components working with each other; you should not go into specifics, or explicitly describe code. Around 2-3 pages will be fine. You can sprinkle your document with pictures if you think that they will explain your ideas better. A non-technical user should be able to understand your README.
  3. Project Video: This video should only be 2-4 minutes in length and uploaded to Youtube (make sure your video is viewable – public or unlisted). In your video, introduce your group and then explain and demo your project. At the end, make sure to briefly explain the complexity of your project (what made it hard/interesting?). This need not be of Hollywood quality, but make sure that we can tell what is happening. You can use the computers in MGH 030 and 044 to make your video, as they have screen capture capabilities. For more information about making videos, please view this guide.


  • Submit your ZIP file containing your program files and your README to the .
  • Submit your Youtube video URL (make sure the video is Public or Unlisted) to the .
    • If you would like to share your project video with the rest of the class, there will be a Piazza post to do so released around the time the project is due.

Final Project Ideas

Deciding on a project of your choice and design can be tough! Here are some recommended program categories. Remember to discuss your project idea(s) with a TA before starting on your design document. Projects should be "G-rated" and of sufficient programming difficulty.

  • Recreate a game you've played before
    • Try to figure out how a game you like was implemented! Note that there are some that we'd prefer you avoid listed below.
    • Examples might include Breakout, Pac-man, Frogger, Asteroids, Minesweeper, Sudoku, KenKen, 2048, etc.
  • Educational game
    • Program that aims to be helpful and instructive for its users.
    • Examples might include a math learning game or an open heart surgery walk-through.
  • Art-based program
    • Create a visual or musical program that acts as a medium for the user to exercise or practice their creative talents.
    • Examples might include a drawing program, audio visualizer, or musical instrument trainer.
  • Artificial intelligence (AI)
    • A computer algorithm that plays a game "intelligently."
    • Examples might include an AI for Tic-Tac-Toe, Connect Four, or Texas Hold-'Em.
  • Data visualization and/or analysis
    • Take a set of data (either user-specified or drawn from an online source) and choose an interesting way of visualizing and/or analyzing it. Ideally the user should be able to interact with the data in some capacity (changing views, sorting, datasets, etc.).
    • Examples might include a graphing calculator, a genetics probability calculator, visualization of car trends over time, visualization of food consumption across the country, etc.
  • Simulation
    • Rules are given for a system and then variables can be changed either via random input or user-defined input for the program so that it can run a simulation on the elements involved for the user.
    • Examples might include a traffic simulator or a fish tank simulator.

Discouraged Ideas

The following ideas are discouraged because they are generally too easy or similar to completed assignments:

  • Concentration (the "memory game")
  • Hangman
  • Pong
  • Tic-Tac-Toe
  • Typing tutor-like game

Final Project Past Examples

Please don't use another person's project to start creating your own – we want you to start from scratch. Nevertheless, getting inspiration from other projects, programs, etc. is encouraged. Here are some past CSE120 projects that may be good for generating ideas:

The Most A-MAZE-ing Game

Notes: Demo should have included a slower run to show that the old record persists.

Ultimate Chopsticks (usually played as a finger game)

Notes: Video is long because the game takes a while to explain.

Snake: The Game (platformer)



Notes: Video does not include discussion of project complexity.

Hangman with significant extensions

Notes: Video runs slightly long. Multiple avatars and input checking sufficiently added complexity to the standard Hangman game. Complexity portion should have included some high-level discussion of implementation details.