CSC358 AW3 Solution