CS 106A: Programming Methodology — Stanford Root