Project for CSC524 at the University of Miami.