DM507: Algorithms and Data Structures (10 ECTS)

STADS: 15016701

Level
Bachelor course

Teaching period
The course is offered in the spring semester.

Teacher responsible
Email: rolf@imada.sdu.dk

Timetable
Group Type Day Time Classroom Weeks Comment
Common I Monday 08-10 U1 8
Common I Monday 12-14 U140 15
Common I Monday 12-14 U55 17
Common I Monday 10-12 U140 20
Common I Tuesday 14-16 U140 6-7,10,14-16
Common I Tuesday 14-16 U1 9,11-12,19
Common I Wednesday 16-18 U55 17
Common I Thursday 08-10 U110 20-21
Common I Friday 08-10 U1 6
Common I Friday 08-10 U45 8,10,12,18
H7 TE Monday 14-16 U64 7,9
H7 TE Monday 14-16 U24 8
H7 TE Monday 14-16 U141 10
H7 TE Monday 14-16 U17 11
H7 TE Monday 14-16 U143 12,15-17,19-20
H7 TE Tuesday 16-18 U146 6
H7 TE Tuesday 12-14 U143 18
H7 TE Wednesday 14-16 U143 7,9,11,14,16,20-21
H7 TE Thursday 08-10 U64 18
H7 TE Friday 14-16 U143 14
H8 TE Wednesday 12-14 U24 7,9,11,15-19
H8 TE Wednesday 12-14 U8 14
H8 TE Wednesday 12-14 U23A 20
H8 TE Thursday 10-12 U143 6-12,16,18,20-21
H8 TE Thursday 16-18 U143 14
H9 TE Tuesday 10-12 U8 7-8,11,15-21
H9 TE Wednesday 10-12 U24 7,9-12,16
H9 TE Wednesday 12-14 U20 14
H9 TE Wednesday 10-12 U143 18,20
H9 TE Thursday 08-10 U143 6
H9 TE Thursday 08-10 U64 9
H9 TE Friday 14-16 U23A 14
M1 TE Monday 12-14 U23A 7-12,16,18-20
M1 TE Monday 14-16 U142 15,17
M1 TE Thursday 16-18 U17 14
M1 TE Friday 10-12 U64 6-7,9,11,14,16,18,20-21
T1 TE Tuesday 16-18 U64 6,15-21
T1 TE Tuesday 16-18 U181 7-12
T1 TE Tuesday 16-18 U151 14
T1 TE Friday 08-10 U43 7,9,11
T1 TE Friday 08-10 U8 14,16
T1 TE Friday 10-12 U153 18
T1 TE Friday 08-10 U156 20
T2 TE Wednesday 08-10 U44 7-12
T2 TE Thursday 12-14 U53 9,11
Show entire timetable
Show personal time table for this course.

Comment:
220318:T2 nedlagt fra uge 14 og frem.
Ubegrænset deltagerantal

Prerequisites:
None

Academic preconditions:
Students taking the course are expected to:
  • Have knowledge of the contents of DM549 Discrete Methods for Computer Science. In particular, some amount of mathematical maturity is assumed.
  • Be able to use the methods from DM550 Introduction to Programming. In particular, familiarity with programming in Java is assumed.


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.

The course builds on the knowledge acquired in the courses DM549 Discrete Methods for Computer Science and DM550 Introduction to Programming, and gives an academic basis for studying the algorithmical and complexity theoretical topics that are part of the degree. In relation to the competence profile of the degree it is the explicit focus of the course to:

  • Give the competence to develop new variants of central algorithms and data structures developed within computer science.
  • Give skills to analyze pros and cons of algorithms, in particular with respect to the use of resources.
  • Give knowledge and understanding of a selection of core algorithms and data structures developed within computer science.


Expected learning outcome
The learning objective of the course is that the student demonstrates the ability to:
  • use the algorithms taught in the course on concrete problem instances.
  • give precise arguments for the correctness or incorrectness of an algorithm.
  • determine the asymptotic running time of an algorithm.
  • adapt known algorithms and data structures to special cases of known problems or new problems.
  • design new algorithms for problems similar to those taught in the course. This includes giving a precise description of the algorithm, e.g. using pseudocode.
  • make expedient choices of data structures.
  • design new data structures based on known data structures.
  • design and implement a larger program, using algorithms and data structures taught in the course.
  • give precise arguments for the choices made in connection with the previous four items.
Subject overview
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
    Meddeles ved kursets start.


Website
This course uses e-learn (blackboard).

Prerequisites for participating in the exam
  1. A mandatory project. Internal examiner. Passed/not passed. The project must be passed to in order to be admitted to the exam. (15016712).
Assessment and marking:
  1. Written exam where books, notes and calculators may be used. External examiner. Grades according to the 7-point marking scale. (10 ECTS). (15016702).

The reexam in August is an oral exam with external examiner and grades according to the 7-point grading scale.



Expected working hours
The teaching method is based on three phase model.
Intro phase: 44 hours
Skills training phase: 40 hours, hereof:
 - Tutorials: 40 hours

Educational activities Study phase: 14 hours
Educational form
  • Exercises in study groups.


Language
This course is taught in Danish or English, depending on the lecturer.

Course enrollment
See deadline of enrolment.

Tuition fees for single courses
See fees for single courses.