This is the Fall 2014 CMPUT 301 Project 1.