CprE 581 Final Project