Stanford CS106A assignment