Architectural Heritage of Design Patterns
Christopher Alexander is an architect who first coined the term "Design Patterns". His idea is that there are patterns to problems and solutions in the environment where the core of the solution is the same. The solution may be done differently but the pattern behind the solution is similar.
In the book "Design Patterns: Elements of Reusable Object-Oriented Software", the authors believe that the same idea is true in software design. Good patterns of design solutions are repeated in software even when the software itself may do very different things. Their book is a catalog of good designs that have been observed in software. They name the pattern, describe it and study its usage.
Gang of Four Patterns
The textbook we are using, Design Patterns: Elements of Reusable Object-Oriented Software, is a classic our field. It is why it is still the official textbook for the course even though it was published in 1994 (which we know is ancient history in the world of computers). Since the writing of the book other patterns have been observed but this is a good starting point in studying of design patterns. The textbook was authored by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. As there are four authors, the textbook and patterns described in it are often described as Gang of Four. We are going to use that terminology in these notes. Sometimes you will also see "Gang of Four" shortened to GoF.