Assignment 3 of the csc309 course