Final Project

Goals

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.

In-person final project presentations have been cancelled. Instead, we give you two alternatives:

  • You and your partner may create a video of yourself giving your presentation, including a demo of your project. If necessary, you may have each group member record one half of the presentation separately, then you can can cut the two halves together and submit that. More information about how to make screen recordings can be found here. We recommend uploading your video to YouTube (you can make it unlisted) and submitting the link.
  • Alternately, you may schedule a time during the final exam period to remotely give your presentation to the CSE 120 staff over Zoom. If you prefer this option, please schedule a time to present using this link. (Let us know if no more spots are available.) Information about how to use Zoom can be found here.

We recognize that it will be more difficult to collaborate on this project without section meetings and in-person office hours. We will take this into account when assigning project grades. To collaborate on Processing projects remotely, you may consider using Codeshare to collaboratively edit code, or Zoom Video Conferencing (now free to UW students) to share your screen.

The rubric for the presentation has been updated to reflect this change; please take a minute to review it. The other submission requirements (and due dates) for the final project remain the same.

Working in a Group

This project is to be completed in groups of no more than 2. We strongly encourage you to work in pairs, since you will be able to divide up the work and produce a more complex project. If you plan on working with a partner, please let one of the teaching staff know ahead of time so that we can set up groups on Canvas. That way, you and your partner will only need to submit one copy of each part of this assignment.

Part 1: Project Design Document (Due Mar 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. It may be helpful to write down "safe goals" that you are sure you can accomplish, along with "reach goals" that you will work on if you have time.



Submission

  • 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 Assignment Page.
    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 Mar 11)

Each group must schedule at least one time to meet with the course staff over Zoom and show the progress that they've made with their project. This must be done on or before the end of the day on Wednesday, Mar 11. To schedule a meeting, email cse120-staff@cs.washington.edu.

Part 3: Project Submission and Presentation (Due Mar 19)

In-person final project presentations have been cancelled. See the note at the top of this page.

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 Presentation Video (submitted on Canvas): Your presentation should be 5-8 minutes long and should include the following parts:
    • Brief introduction of group members
    • Description of the process of completing the project, including challenges that you encountered
    • Brief explanation of the complexity of your project (what made it hard/interesting?)
    • A demo of your completed project!
    Feel free to be creative with this portion of your project — show off your presentation skillz that we worked on during section during the quarter! Information about how to make screen recordings can be found here.


Submission

You must submit your project (including video and project files) before 2:30pm on March 19.






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:


SPACEDUEL

Notes: Video does not include discussion of project complexity.


Hangman with significant extensions

https://youtu.be/H5OPBUZ2LRU

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.