CMPUT301 assignment 1