Design Patterns form an advanced area in object oriented design and architecture. Design patterns focus on solutions to problems commonly found in design of object oriented programs. The first part of the course examines the fundamentals of the core patterns: creational, behavioral, structural, and system patterns. The second part of the course examines patterns of enterprise applications. Enterprise applications handle display, business operations, and database interaction of large amount of often complex data. Examples include financial systems, reservation systems, supply chain system, and many others that run modern business. Enterprise applications are structured in layers. Discussions of layers of enterprise architecture is followed by design patterns that are used in each layer.