DM507: Algorithms and Data Structures
The Study Board for Science
Teaching language: Danish or English depending on the teacher
EKA: N330068112, N330068102
Assessment: Second examiner: None, Second examiner: External
Grading: Pass/Fail, 7-point grading scale
Offered in: Odense
Offered in: Spring
Level: Bachelor
STADS ID (UVA): N330068101
ECTS value: 10
Date of Approval: 21-10-2025
Duration: 1 semester
Version: Archive
Internal Course Code
Comment
Entry requirements
The course cannot be chosen if you have passed, are enrolled in, have followed DM578, DS814 or DSK814 or if either of those is a mandatory part of your curriculum.
Academic preconditions
Students taking the course are expected to
- posses mathematical maturity corresponding to the level in the DM549 and
- be familiar with programming in Python corresponding to the level from e.g. DM574.
Course introduction
The aim of the course is to enable the student to apply a wide range of existing algorithms and data structures for fundamental problems, as well as general methods for developing new algorithms and mathematical tools for analyzing the correctness and efficiency of algorithms. This is of paramount importance for the ability to develop efficient software, and is central to the understanding of upper and lower bounds for computational problems.
Expected learning outcome
The learning objective of the course is that the student demonstrates the ability to:
- use the algorithms and data structures taught in the course on concrete problem instances.
- give precise arguments for the correctness or incorrectness of an algorithm or a data structure.
- determine the asymptotic running time of an algorithm or a data structure.
- adapt known algorithms and data structures to special cases of known problems or new problems.
- design new algorithms and data structures for problems similar to those taught in the course, including giving a precise description of the algorithm, e.g. using pseudocode.
- design and implement a larger program, using algorithms and data structures taught in the course.
Content
The following main topics are contained in the course:
- Mathematical basis: recursion equations, invariants.
- Algorithms: correctness and complexity analysis, divide and conquer (Master Theorem, Strassen's algorithm), greedy algorithms, dynamic programming, sorting algorithms (insertionsort, mergesort, heapsort, quicksort, countingsort, radixsort), graph algorithms (BFS, DFS, topological sorting of DAGs, connected components, strongly connected components, MST, SSSP, APSP), Huffmann coding.
- Data structures: dictionaries (BSTs, red-black trees, hashing), priority queues, disjoint sets.
Literature
Examination regulations
Exam element a)
Timing
Spring
Tests
A mandatory project
EKA
N330068112
Assessment
Second examiner: None
Grading
Pass/Fail
Identification
Full name and SDU username
Language
Normally, the same as teaching language
Examination aids
All common aids except generative AI
ECTS value
2.5
Exam element b)
Timing
June
Tests
Written exam
EKA
N330068102
Assessment
Second examiner: External
Grading
7-point grading scale
Identification
Student Identification Card - Exam number
Language
Normally, the same as teaching language
Duration
3 hours
Examination aids
The exam is with limited aids. Only the following aids are allowed:
- textbooks, notes, lecture presentations, compendiums, and formula collections, etc.
Internet is not allowed during the exam. However, you may visit system DE-Digital Exam when answering the multiple-choice questions. If you wish to use course materials from itslearning, you must download the materials to your computer the day before the exam. During the exam course material may not be available to you.
ECTS value
7.5
Additional information
The reexam in August is an oral exam with external examiner and grades according to the 7-point grading scale.
Indicative number of lessons
Teaching Method
Planned lessons:
In the team lessons, the participants work individually and in groups on exercises and programming tasks based on the subject. Help and feedback is given, and solutions are presented at the end.
Total number of planned lessons: 88
Hereof:
Common lessons in classroom/auditorium: 44
Team lessons in classroom: 44
Team lessons in classroom: 44
In the common lessons, the course subjects are introduced and covered in detail by the lecturer, while allowing for questions from participants.
In the team lessons, the participants work individually and in groups on exercises and programming tasks based on the subject. Help and feedback is given, and solutions are presented at the end.
Other planned teaching activities:
After the common lessons and before the corresponding team lessons, the participants work individually and in groups on understanding the subjects and on associated exercises and programming tasks.
Teacher responsible
Timetable
Administrative Unit
Team at Registration
Offered in
Recommended course of study
Transition rules
Transitional arrangements describe how a course replaces another course when changes are made to the course of study.
If a transitional arrangement has been made for a course, it will be stated in the list.
See transitional arrangements for all courses at the Faculty of Science.