CS106A Assignment 1