Workshop on Software Design and Architecture: Principles, Patterns and Practices

Software design patterns are reusable solutions that solve the design challenges software developers face over and over again in their career. Rather than reinventing the wheel, learn how to ensure re-usability of design will make your software more reliable and flexible to change.

This Software Design Patterns and Architecture workshop offers a comprehensive introduction to software design principles and patterns, code smells, refactoring and unit testing code.

The workshop will help participants understand good object-oriented design through the medium of highly useful design patterns and help them for doing clean design and code.


After completing this workshop, you will be able to:

  • Improve logical design thinking using design patterns.
  • Recognize that software engineering is more that writing code.
  • Understand the meaning of clean code.
  • Implement programming solutions using multiple approaches and recognize tradeoffs.
  • Use object-oriented concepts including interfaces and abstract classes for solving complex design issues.
  • Understand what are good code and what are bad code.
  • Understand what are good design and what are bad design
  • Write unit testing code.
  • Recognize the code smell and find the appropriate refactoring solution.
  • Understand the design principles and implement them in writing object-oriented code.

Who is this workshop for?

  • Software Engineer, Programmer, Developer, Team Lead, Project Manager.


  • Programming knowledge.
  • Understanding Object-Oriented code.

Every participant must bring his/her laptop.

Number of seats/participants: Twenty four (24).

Fee: 8,000 BDT + 15% VAT

How to enroll:

  1. Apply here: Send your basic information.
  2. After getting your information, we will communicate with you and suggest you whether you should register or not.
  3. Pay and register to attend.

Outline of this workshop:

  1. Quick overview on object oriented programming and concept.
  2. What is software design?
  3. What is software architecture? What are roles of a software architect?
  4. Is design dead?
  5. Code smells and refactoring techniques.
  6. Design Patterns:
    1. Creational Patterns
      1. Simple Factory
      2. Builder
      3. Factory Method
      4. Prototype
      5. Singleton
    2. Structural Patterns
      1. Adapter
      2. Bridge
      3. Composite
      4. Decorator
      5. Façade
      6. Flyweight
      7. Proxy
    3. Behavioral Patterns
      1. Chain of Responsibility
      2. Command
      3. Iterator
      4. Mediator
      5. Memento
      6. Observer
      7. State
      8. Strategy
      9. Template Method
      10. Null Object Pattern
  7. Design Principles
    1. Single Responsibility Principle (SRP)
    2. Open Closed Principle (OCP)
    3. Liskov Substitution Principle (LSP)
    4. Interface Segregation Principle (ISP)
    5. Dependency Inversion Principle (DIP)
    6. DRY – Don’t Repeat yourself
    7. Once and only once
    8. Tell Don’t Ask
    9. The Law of Demeter
    10. Inversion of Control
    11. Dependency Injection

Tools: Language: C#, IDE: Visual Studio 2012/Visual Studio 2013/Visual Studio 2015

Trainer: Zohirul Alam Tiemoon (CEO, Nerd Castle Limited)

Assistant Trainer: Tayabur Rahman Masud (Software Engineer, Nerd Castle Limited)

Apply Now