Design Patterns

Course Description

The course addresses general principles and specific methods for designing flexible and modular software subsystems. A notion of a design pattern is introduced as a well known and tested solution to a recurring problem in a particular problem domain. The classifications of design patterns are considered, according to purpose, scope, and the level of abstraction, together with the corresponding representatives. It is assumed that the basic pieces of knowledge from the domain of object oriented programming have been acquired on the introductory courses.

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


The course includes two hours of lectures per week.


The course includes four laboratory exercises.

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Laboratory Exercises 40 % 20 % 50 % 0 %
Mid Term Exam: Written 0 % 40 % 0 %
Final Exam: Written 0 % 40 %
Exam: Written 50 % 80 %
Exam: Oral 20 %

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
Computer Engineering (module)
Elective Courses (6. semester)
Computer Science (module)
Elective Courses (6. semester)
Computing (study)
Elective Courses (6. semester)
Electrical Engineering and Information Technology (study)
Elective Courses (6. semester)
Software Engineering and Information Systems (module)
Elective Courses (6. semester)
University graduate
Audio Technologies and Electroacoustics (profile)
Free Elective Courses (2. semester)
Communication and Space Technologies (profile)
Free Elective Courses (2. semester)
Computational Modelling in Engineering (profile)
Free Elective Courses (2. semester)
Computer Engineering (profile)
Elective Course of the profile (2. semester)
Computer Science (profile)
Core-elective courses (2. semester)
Control Systems and Robotics (profile)
Free Elective Courses (2. semester)
Data Science (profile)
Free Elective Courses (2. semester)
Electrical Power Engineering (profile)
Free Elective Courses (2. semester)
Electric Machines, Drives and Automation (profile)
Free Elective Courses (2. semester)
Electronic and Computer Engineering (profile)
Free Elective Courses (2. semester)
Electronics (profile)
Free Elective Courses (2. semester)
Information and Communication Engineering (profile)
Free Elective Courses (2. semester)
Network Science (profile)
Free Elective Courses (2. semester)
Software Engineering and Information Systems (profile)
Core-elective courses (2. 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,


Laboratory exercises

For students


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

Grading System

89 Excellent
76 Very Good
63 Good
50 Acceptable