CMPT474 Assignment 5