cmps111 assignment 3