I recently picked up a book on Java certification (it was on sale). Obviously being Java there was a lot of coverage with regards to OOA, OOD, OOP, UML and so on. One of the more interesting sections was regarding was so called, 'Design Patterns'. Basically, a while back some computer scientists discovered that often certain problems/programs followed a similar pattern. Moreover, you could use these (as long as you recognise and are aware of them) patterns to reduce time/effort spent on designing/building new programs by using templates of these patterns. These templates ultimately became known as 'Design Patterns' and cover everything from development of GUI applications to layout of elements on a webpage.