Basic data structures: linked list, binary tree, hash table, stack, queue Design Patterns: Millions of these, but these of some of the absolute core Creational ---------- http://en.wikipedia.org/wiki/Creational_pattern abstract factory factory lazy initialisation (lazy loading) singleton Behavioral ---------- http://en.wikipedia.org/wiki/Behavioral_pattern command iterator observer strategy Structural ---------- http://en.wikipedia.org/wiki/Structural_pattern adapter composite decorator/wrapper facade proxy Presentation ------------ Model View Controller (pedants argue this is an architectural pattern not design) OO Principles ------------- Decoupling Encapsulation Favour interfaces rather than implimentation inheritance