This document introduces design patterns and their use and documentation. It discusses how experienced designers reuse successful past solutions in new designs rather than solving every problem from scratch. These recurring solutions are called design patterns. The document then provides an overview of how design patterns are described, including their name, structure, participants, collaborations, consequences, implementation details, sample code, known uses, and related patterns. It also gives examples of patterns used in Smalltalk's MVC framework. Finally, it provides a catalog and brief overview of 23 design patterns.