CSC309H1 - Assignment 3