Stanford CS106A Assignment 1