Senior Project for Yale Computer Science 490. Spring of 2014.