csc309 assignment 3