Coursework for Stanford CS 106A: Programming Methodology