The final project for CIS 120 - Programming Languages and Techniques I, Fall 2012