CMPT474 Assignment 2