Hide menu

TDDB84 Design Patterns

Course information

Main area:Computer Science, Design Science



Design patterns represent techniques to identify typical problems that have typical solutions in object-oriented applications in the form of design patterns. Governing those design patterns are a set of design principles. Design principles, and the patterns listed in the literature, will be approached during online lectures with case studies where we will analyze code examples with respect to their adherence to design principles and modify code to illustrate how changes affect possibilities to manage changes in software. Students will train in identifying and evaluating design decisions made by others, evaluate the consequences of design decisions and write a paper on the relationship between design principles, design patterns and properties of languages and application domains. Students will engage practically in identifying software patterns, writing tests of software with the purpose of identifying how software supports the introduction of automated tests, and extend existing software in a non-trivial manner and relate the implemented change to the use of design principles and design patterns.


Software Design Principles. SOLID. Object-Oriented Software Design Patterns. MVC. The History of Software Design. Dynamic programming languages and design patterns. Dependency Injection.

Prerequisite knowledge

Students will need to have proficiency in object-oriented programming languages, object-oriented concepts and implementation techniques such as polymorphism, and basic design principles regarding object modeling and the use of UML. Students will also have to have experience from laboratory courses in applied Computer Science, such as Compiler Construction, Artificial Intelligence, Game Programming, Interaction Programming, Web Programming.


The course language is English.

Page responsible: Ola Leifler
Last updated: 2014-08-21