Final Project

The climax of this course is its final project. The final project is your opportunity to take your newfound savvy with programming out for a spin and develop your very own piece of software. So long as your project draws upon this course’s lessons, the nature of your project is entirely up to you. You may implement your project in any language(s). You are welcome to utilize infrastructure other than the CS50 IDE. All that we ask is that you build something of interest to you, that you solve an actual problem, that you impact your community, or that you change the world. Strive to create something that outlives this course.

Inasmuch as software development is rarely a one-person effort, you are allowed an opportunity to collaborate with one or two classmates for this final project. Needless to say, it is expected that every student in any such group contribute equally to the design and implementation of that group’s project. Moreover, it is expected that the scope of a two- or three-person group’s project be, respectively, twice or thrice that of a typical one-person project. A one-person project, mind you, should entail more time and effort than is required by each of the course’s problem sets.


  • a web-based application using JavaScript, Python, and SQL, based in part on the web track’s distribution code
  • an iOS app using Swift
  • a game using Lua with LÖVE
  • an Android app using Java
  • a Chrome extension using JavaScript
  • a command-line program using C
  • a hardware-based application for which you program some device

How to Submit

Step 1 of 2

Create a text file that explains your project and save it in a new folder called project in your ~/ directory. Note that your project source code itself does not need to be submitted, but this file must.

Execute the below from within your ~/project directory, logging in with your GitHub username and password when prompted. For security, you’ll see asterisks instead of the actual characters in your password.

submit50 cs50/problems/2020/x/project

Step 2 of 2

Submit a short video (that’s no more than 2 minutes in length) in which you present your project to the world, as with slides, screenshots, voiceover, and/or live action. Your video should somehow include your project’s title, your name, your city and country, and any other details that you’d like to convey to viewers. See for tips on how to make a “screencast,” though you’re welcome to use an actual camera. Upload your video to YouTube (or, if blocked in your country, a similar site) and take note of its URL; it’s fine to flag it as “unlisted,” but don’t flag it as “private.”

When ready to submit your video, submit this form!

That’s it! Your project should be graded within a few minutes. If you don’t see any results in your gradebook, best to resubmit (running the above submit50 command) with only your file this time. No need to resubmit your form.

This was CS50 AP!