cs3113 assignment 2