The course cs106a Programming Methodology teaches the widely-used Java programming language along with software engineering principles. Its lectures from Fall 2007 are provided as streams via iTunes. While the iTunes feed includes the handouts and assignments from 2007, its homepage at Stanford provides the material of the recent course.