cpsc 304 repo