"Programming Methodology (CS106A) is an Introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Uses the Java programming language. Emphasis is on good programming style and the built-in facilities of the Java language."
At the Standford CS106A courrse, you’ll find all the necessary information and resources for CS106A, like how-to-videos, handouts, assignments and so on. If you haven’t seen it already, be sure to check out their youtube lecture videos.
The great thing about this educational course is that you don’t have to be a Standford student complete them. Of course, you wont get a grade, but it’s really a great learning experience to anyone who is interested in programming and Java. If you are, I encourage you to follow along and post your assignment solutions and ideas here. Good luck :)