This document provides an overview of design patterns in software engineering. It discusses the motivation for using design patterns to solve recurring problems in software design. It describes what constitutes a design pattern and the key elements of a pattern including the pattern name, problem, solution, and consequences. The document also categorizes common design patterns into creational, structural, and behavioral patterns and provides examples of patterns from each category.