Course DescriptionDesign patterns are solutions to commonly encountered programming challenges. In this practical, hands-on course, students learn how to write C# applications using the most common design patterns. Emphasis is on the design and interaction of objects and building communication platforms embracing elegant, reusable, object-oriented technology. The coursework is structured as a series of modules focusing on a particular design pattern. Each module also presents the UML (Unified Modeling Language) diagram illustrating how the classes interact. In subsequent labs, students discover how to implement working example programs that use the pattern under consideration.