CSC309 assignment