cmpt276-assignment1