Hide menu

TDDB84 Design Patterns

Course information

Course goals

After the course, students will be able to

  1. Identify and explain software design principles and design patterns in existing object-oriented software.
  2. Apply software design principles and design patterns when working with existing object-oriented software.
  3. Describe the purpose and consequences of design patterns in object-oriented software.
  4. Critically evaluate software design principles and design patterns in relationship to software qualities.
  5. Analyze the relationship between software design principles, design patterns, programming languages and application frameworks.

Course organization

The course is organized around two main activities: writing and sharing papers on a selected set of topics related to Software Design principles and Design Patterns, and conducting a series of programming assignments related to understanding design principles and patterns. To support those activities, there will be a series of larger seminars and a set of lab sessions scheduled. Furthermore, there will be recorded lecture material on concrete design patterns as well as on the use of design principles in the course. For students who take the course in Norrköping, there will be an opportunity to take the course locally through video conferencing facilities used for seminars, and a locally available lab assistent during the lab sessions.

Course activities


There will be a series of weekly seminars in the course, where each seminar will be related to one of the lab assignments, or writing a paper on a topic related to design patterns.

Lab assignments

The course will have three main lab assignments that you perform in groups. There will be an oral examination at the end of the lab series, where you get to bring your work and reflections individually to a lab assistant and talk about your work. The lab assignments are:

  1. Analyzing an application with respect to design decisions taken and the design patterns that are found to be implemented or needed.
  2. Introducing new tests in an application and studying what will be required to run tests in the application.
  3. Extending the application, sharing the extensions with other students and reflecting on the outcome.


The examination of the course is divided between working with an open source project and submitting individual papers on design patterns and principles. The labs are examined by written reports on your work in the first two labs, and an oral examination with a lab assistant at the end of the lab course. See more information on the page describing the labs. Your papers will be written in an iterative style, where you will get to review other students' work and improve on your own. See the page on writing papers for more information.

Page responsible: Ola Leifler
Last updated: 2015-07-03