Final project for CMSC 435/634