Public version of my CPSC 310 project.