Ubc cpsc 310 final.