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


The course includes two hours of lectures per week.


The course includes four laboratory exercises.

Grading Method

By decision of the Faculty Council, in the academic year 2019/2020. the midterm exams are cancelled and the points assigned to that component are transferred to the final exam, unless the teachers have reassigned the points and the grading components differently. See the news for each course for information on knowledge rating.
Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Laboratory Exercises 40 % 20 % 40 % 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
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

Grading System

89 Excellent
76 Very Good
63 Good
50 Acceptable