csi2110 assignment 4