Final project for Harvard's CS 109.