CS356 Assignment 1