Stanford CS106A Programming Methodology course (taken via iTunes U)