CPSC425 source code