Final Project for Harvard's CS 109