Final project for CMPSC 121, PSU, May 2012