CMPT307 Assignment