Related Courses Trainers Calendar Webinars


Design Principles and Patterns Workshop

The Design Patterns Workshop offers a comprehensive introduction to design patterns, with a focus on patterns that have proven over the last decade to be most effective at addressing real-world software design problems.

The workshop helps people understand good object-oriented design through the medium of highly useful design patterns. Students are introduced to essential patterns via an amalgam of interactive discussions and hands-on exercises and quizzes.

The patterns taught in this course are drawn primarily, but not exclusively, from the classic catalog by Gamma, et al.: Design Patterns: The Elements of Reusable Object-Oriented Software Design. Students will gain a solid understanding of essential patterns as well as how to incorporate them into new or legacy code using modern refactoring and testing tools.


Learning Outcomes

  • Understand essential design patterns, and how to use them
  • Obtain a strong, fundamental understanding of Smalltalk style Object Orientated Development
  • Understand basic OO design principles and see how they apply to real world problems
  • Learn to recognise code smells and understand how they violate the design principles
  • Obtain an excellent understanding of 10+ design principles and 30+ design patterns
  • Experience hands-on, refactoring to and away from patterns during the lab sessions
  • Gain a working vocabulary of design patterns
  • Understand how to evolve patterns into a design, rather than designing with them up-front

Strongly Recommended

  • 1 or 2 Days of Mentoring via Pair Programming with Developers on your code base
    • To get your team kick-started with the learning from the workshop, we recommend, that our trainer spends a day or two, working with your team on your code base.
    • Each day will be reserved for 4 pair programming sessions. During these sessions, the workshop participants will take specific examples from their projects, where they are finding it difficult to apply any of the practices learned in the workshop. The trainer will then pair with an individual to show how to resolve those challenges.
    • At the end of the day, the 4 volunteers will summarize their learning by showing before and after code from their respective pairing session to the rest of the group.
  • Pre-Post Programming Assessment
    • The goal of these programming assessments is to identify real and quantifiable measures for the learning achieved through our workshop.
    • Objective:
      • Get a quick understanding of your knowledge and skill level with respect to Designing & Programming
      • Establish a baseline against which the effectiveness of the workshop may be measured
      • Customize our workshop based on specific areas identified in this assessment
    • Pre-Assessment: Before the workshop, we’ll send a problem description, your developers will spend max 4 hours and solve the problem and send us the code. We’ll evaluate the code and send you detailed feedback about the code, including areas for improvement. We can send different types of problems (fresh development, cleaning up existing code and so on.)
    • Post-Assessment: 2 week after the workshop, we send another problem and evaluate the solution code. A comparison between the Pre and Post Assessment should be able to clearly quantify per-participant level improvement.
    • Click on the image to download the sample report…

prog-assessment (1)

Method of Instruction

  • Interactive Dialogues, Programming Exercises, Demos, and Instructional Games

Transfer %

  • Knowledge: 60%, Skill-Building: 40%

Course Level

  • Advanced

Course Prerequisites

  • Required: solid hands-on understanding of OO concepts and an OO language
  • Highly Recommended: overall understanding of the life-cycle of software projects

Development Tools







  • Primary: Object-Oriented Programmers, Architects, and Designers
  • Secondary: Technical Managers, Technical Writers, User Experience Designers

Course Outline

Day 1
  • Implementation Patterns
    • Values of a Good Design – Communication, Simplicity, Flexibility
  • OO Design Principles:
    • Open Close Principle (OCP)
    • Single Responsibility Principle (SRP)
    • Tell, Don’t Ask
    • Don’t Repeat Yourself (DRY)
    • Law of Demeter
    • Dependency Inversion Principle (DIP)
    • Liskov Substitution Principle (LSP)
    • Interface Segregation Principle (ISP)
    • Triangulate
  • Code Smells and Refactoring
Day 2Readability, Construction
and Structural Pattern
PatternProgramming Exercise
Composed Method
Fluent Interface
Template MethodTemplate Method: Loans Exercise
Creation MethodCreation Method: Loans Exercise
Factory Method
Abstract Factory
StrategyStrategy: Loans Exercise
CompositeComposite Product Finder Exercise
Chain of ResponsibilityEmployee Exercise
Day 3Behavioral and Structural
PatternProgramming Exercise
Null ObjectPerson Finder Exercise
Guard Clause
InterpreterProduct Finder Exercise
ProxyProxy Finance Exercise
MemoizationFibonacci Exercise
StatePermissions Exercise
Day 4Behavioral and More
advanced Patterns
PatternProgramming Exercise
ObserverxUnit Observer Exercise
Parameter Object
Collecting ParameterTags Exercise
Dependency Injection
IteratorIterator Loans Exercise
Dispatch TableOperator Exercise
Self-ShuntingCoffeeMachine Exercise
Pluggable Selector

Our Most Popular Courses:

Certified Scrum Master (CSM) Certification

Certified Scrum Product Owner (CSPO)

SAFe® Agilist (SA) Certification

Implementing SAFe® 4.6 with SPC Certification

Professional Scrum Master (PSM)

DEVOPS Foundation Certification Course

Team Kanban Practitioner(TKP) Workshop

Mastering Agile SCRUM

Professional Scrum Product Owner (PSPO)

Certified Scrum Developer (CSD)