Course syllabus

August Re-exams

The timetable for the June re-exams (including Zoom link and script) is available here: Oral exams August 2023


TDA552 Object-Oriented Programming and Design lp2 HT21 (7.5hp)

This course is offered by the Institute for Computer Science and Engineering (Data- och informationsteknik) in läsperiod 2, 2020.

This course will be taught in English.

Go Here for Everything

The Modules page - for lecture slides and recordings, exercises, readings, ...

The Assignments page - for the lab assignments and written assignment

Useful Links

Contact Details

Course responsible, examiner and lecturer: Robin Adams (

Teaching Assistants:

Student representatives:

Course Purpose

Software development requires much more than just programs that "work" and "do the right thing". To be able to work with software on an industrial scale, it is required that the programs we create can also be maintained over time, reused and expanded with new functionality, and worked on by many developers, both sequentially over time and in parallel. This course introduces the object-oriented paradigm, and focuses on sound object-oriented design.



Course Literature

There is no mandatory literature for this course.

Some recommended books:

Object-Oriented Design

Learning Java

Classics that Every Software Delevoper should Read Sooner or Later

  • R. Martin. Clean Code
  • R. Martin. Clean Architecture - two books from the man who invented the SOLID principles
  • M. Fowler. Refactoring. Martin Fowler is passionate about refactoring - not just a tedious necessity but a beautiful and important part of the software development process


  • - Excellent website with a list of design patterns, refactoring steps, and code smells

Suggestions for additional readings will be given in the weekly modules and added here as the course progresses.

Course Design

  • Week 1: What is object-oriented design?
  • Weeks 2-3: Types and polymorphism
  • Weeks 4-5: Dependencies and architecture
  • Week 6: Advanced concepts
  • Week 7: Summary

Each week consists of two "modules", each consisting of an exercise session followed by a lecture, with laboratory sessions in between. During the exercise, a concept is introduced through tasks we work on and discuss together, and at the lecture this is followed up together with the general principles, patterns and techniques behind it.

Learning Outcomes

Knowledge and understanding

  • describe and explain object-oriented design principles.
  • recognize and explain different object-oriented design patterns, including their purpose and effect.

Skills and abilities

  • use and explain basic object-oriented concepts, such as classes and objects, primitives and references, methods and constructors, variables and fields, etc.
  • use and explain more advanced language mechanisms and techniques, such as exceptions, generics, threads, defensive copying, etc.
  • use and explain inheritance and parametric types, and associated mechanisms, to achieve polymorphism and code reuse.
  • apply design principles and design patterns to achieve sound object-oriented design.
  • design, implement and modify object-oriented programs for a given domain in a sound manner with respect to correctness, modifiability and reusability.
  • perform and describe testing of object-oriented programs.

Judgement and approach

  • analyse and evaluate code according to sound object-oriented design and implementation principles


The syllabus (kursplan) is available on the Student Portal here.

Examination Form

The course contains three compulsory elements, all of which must be completed with (at least) a passing grade in order to pass the course as a whole.

  • Laboratory assignments: Two laborations, each divided into two parts. Carried out in groups of three students.
  • Written assignment: Written analysis of a code base found "in the wild". Conducted in groups of three students.
  • Oral examination: Conducted individually, at the agreed time during the exam week.