CSCI 201 final project