Code for CSCI 4229 final project