Design Patterns

Learning Outcomes

  1. recognize symptoms of inadequate software design
  2. discuss advantages of dynamic polymorphism, templates, and duck typing
  3. explain the major principles of software design and recognize cases of their violation
  4. evaluate the quality of multiple software designs based key design principles
  5. recognize different design patterns in uncommented code
  6. compare the adequateness of different design patterns in the context of a given design problem
  7. apply design principles for conceiving high-quality software components

Forms of Teaching


Seminars and workshops


Week by Week Schedule

  1. Introduction to object oriented design, Overview of UML, Structure diagrams
  2. Dynamic dispatch: definition of method-call, Subtyping, Object-oriented idioms for encapsulation, Data layout for objects and activation records
  3. Simplicity, regularity, orthogonality
  4. Introduction to software design patterns, Design patterns, Refactoring designs using design patterns
  5. Behavioral patterns
  6. Behavioral patterns
  7. Structural patterns, Eager vs. delayed evaluation
  8. Midterm exam
  9. Creational patterns, Static and dynamic linking
  10. Structural patterns
  11. Collectional patterns
  12. Structural patterns
  13. Behavioral patterns
  14. Creational patterns
  15. Final exam

Study Programmes

University undergraduate
Computing (study)
Elective Courses (6. semester)
Electrical Engineering and Information Technology (study)
Elective Courses (6. semester)


(.), Design Patterns. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Addison-Wesley Professional. 2009.,
(.), Agile Software Development: Principles, Patterns, and Practices. Robert C. Martin. Prentice Hall. 2003,


ID 183426
  Summer semester
L3 English Level
L1 e-Learning
30 Lectures
15 Exercises
8 Laboratory exercises
0 Project laboratory