NUS CS4242 Assignment 1