This document provides an introduction to design patterns, including definitions of what patterns are, why they are used, and common types of patterns. It describes the Observer pattern, which allows objects to notify dependents of state changes, defining a one-to-many relationship between a subject and observer objects so that observers are automatically notified of changes. The Observer pattern establishes a publish-subscribe mechanism between the subject and observer objects.