CS106A assignment 1.