CMPT 350 Final Assignment