CS106A: Programming Methodology (Stanford Univ.). Instructor: Professor Mehran Sahami. This course is an introduction to the engineering of
computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing.
Programming Methodology teaches the widely-used Java programming language along with good software engineering principles. Emphasis is on good programming style
and the built-in facilities of the Java language. The course is explicitly designed to appeal to humanists and social scientists as well as hard-core techies.
In fact, most Programming Methodology graduates end up majoring outside of the School of Engineering.
(from see.stanford.edu)
Lecture 17 - Arrays in Java: Multi-dimensional Arrays, An ArrayList, The Template Class