CPSC 304 Term Project