Note: this site is for both courses DAT038 and TDA417!
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
- 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
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.
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: https://algs4.cs.princeton.edu/
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
- 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.
- Every student should fine someone to team up with, and there is a discussion board to help you find a lab partner.
- It is fine to team up with a student in the other course (DAT038 or TDA417).
- 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.
- 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).
- 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
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
The syllabus page shows a table-oriented view of course schedule and basics of course grading. You can add any other comments, notes or thoughts you have about the course structure, course policies or anything else.
To add some comments, click the 'Edit' link at the top.