Stanford CS106A : Programming Methodology Assignments and Exercises