CS3216 Assignment 1