cpsc 1045 final