Course syllabus

Note: this site is for both courses DAT038 and TDA417!

Quick links:  [Modules]  [Assignments]  [Discussions]  [TimeEdit]  [Info for old students]


DAT038/TDA417 Datastrukturer och algoritmer, lp2 HT19 (7.5 hp)

Note that this is a joint site for the two courses DAT038 and TDA417. They are exactly the same in structure, lectures, assignments, and examination, but you will get your grade reported on the course that you have a registration in (Ladok).

Teachers and student representatives

For detailed contact information, and nice mugshots, see the contact page.

  • Course responsibles: Peter Ljunglöf (examiner), Nick Smallbone
  • Teaching assistants: Abhiroop Sarkar, Carlos Tomé Cortiñas, David Lidell, Felix Naredi, Harald Brorsson, John Sandell, Lo Ranta, Morgan Thowsen, Peter Svenningsson, Sanjin Slavnic
  • Student representatives:
    • DAT038: Alexander Viala Bellander, Ebba Davidsson, Hanna Schmidt, Jakob Wik,
 Love Lindholm Lyckaro, Victor El-Hajj
    • TDA417: Daniel Hagström, Hannes Bergström, Hannes Nordblom, Magdalena Putrym, Oscar Forsberg, Pär Aronsson, Viktor Fredholm

Course purpose

Data structures and algorithms are fundamental building blocks in almost all software products. Knowledge of data abstraction, data structures, and algorithms is important in the construction, use, and maintenance of adaptable, reusable, and efficient program components.

The course gives knowledge and skills in the construction and use of data structures and algorithmic concepts, and gives an introduction to algorithm analysis and data abstraction.

Course literature

Robert Sedgewick and Kevin Wayne (2011). Algorithms, 4th edition. The book is available from Cremona, and there is no e-book version. The book has a good webpage with additional information, code, exercises, etc: 

Some additional material will be made available during the course. Other interesting books and useful websites are listed under Additional resources.

Course organisation and examination

The detailed schedule is in TimeEdit (compact, or as a long list), and details about the lectures and assignments are in the Modules, but here is some general information.


  • There are usually 3 lectures per week: Mondays (10–12 in HC4, and 15–17 in HB4), Tuesdays (13–15 in HB2, and 15–17 in HB4), and Thursdays (13–15 and 15–17, both in HB4).
    • the one exception is that the very first Monday, the first lecture is 8–10
  • Every lecture is given twice, once for TDA417 and once for DAT038.
  • Lecture slides and associated material can be found in the Modules.


  • There are 4 compulsory laborations with submission deadlines every other Friday.
    • Except for lab 1, where the deadline is Wednesday week 2.
    • The deadlines are strict, don't submit anything too late!
  • Every laboration has two deadlines:
    • You must submit something for the first deadline, even if it's not working.
    • The teachers grade and comment on the first submission, and if it's not accepted, you have until the second deadline to correct your solution.
  • The laborations are done in pairs.
  • There are lab sessions Wednesdays (13–19), Thursdays (8–12) and Fridays (13–17), where you can get help from course assistants.
  • The laborations are not graded, but you have to pass all four of them.

Weekly exercises

  • Every week we will publish new exercises which will help you in your learning.
  • You are encouraged to attend one exercise session every Tuesday (8–10, 10–12 or 13–15). 

Written examination

  • There is a written exam at the end of the course; as usual it is compulsory and individual.
  • Your final course grade will be decided from your result on the written exam. 

Passing the course

  • To pass the course you need to pass all four laborations, and the written examination.
  • The final grade is the same as the grade on the written examination.

Students from previous years (TDA416, DAT037)

  • If you passed all laborations, then you don't have to redo any labs – it's enough with passing the written examination. Note that the questions might differ slightly from the current students' exams.
    • if you passed the written examination but have some labs left to do, you have to submit all labs in this course!
    • i.e., you have to have the laborations subcourse marked as completed in Ladok
    • more information here

Changes made since the last occasion

The course has a new course book since last time, and therefore some content has changed:

  • Some specific data structures and algorithms are different from previous years. 
  • The laborations are mostly new since previous years.
  • Several exercises are new.

Learning objectives and syllabus

You can read the complete syllabus on Studieportalen (DAT038, TDA417 – note that the syllabi are equivalent), but here are the learning outcomes of the course:

Knowledge and understanding

  • explain some basic abstract data types and data structures, including lists, queues, hash tables, trees and graphs
  • explain some of the algorithms used to manipulate and query these data structures in an efficient way, and explain why they are correct

Competence and skills

  • apply basic abstract data types and data structures, and algorithms related to these
  • implement and use abstract data types as interfaces and data structures as classes, in an object-oriented programming language
  • use a standard library of data structures and algorithms

Judgement and approach

  • analyse the efficiency of different algorithms, for example searching and sorting algorithms
  • make informed choices between different data structures and algorithms for different applications

Course summary:

Date Details Due