Algorithms: Design, Analysis and Implementation

Module Code
TI5009
Module Coordinators
Andreas Gogol-Döring
Teachers
Andreas Gogol-Döring
Short Description
This course is on algorithmic techniques, their use in the algorithm design and the realisation of algorithms using actual techniques of programming languages.
Learning Objectives

After finishing the course the participants should know the most relevant design techniques for algorithms. They know how to use them as guidelines in the the creative process of designing new algorithms in diverse areas and using diverse data structures. They know how to analyse the algorithms, how to provide generic implementations in modern programming languages and if appropriate how to realize them as components of a library. They are able to present and to defend their decisions in critical discussion.

Contents
  • Analysis of algorithms
  • Algorithmic design techniques: Divide and conquer, dynamic programming, greedy algorithms, backtracking, branch-and-bound, linear programming, etc.
  • Dealing with NP-Complete problems
  • Applications of algorithmic design techniques using diverse data structures
  • Generic Programming and the generalisation of algorithms
  • Algorithms and data structures as parts of program libraries
Duration in Semester
1
Instruction Language
German
Total Effort
6 CrP; an estimated 180 hours, of which approximately 60 are spent in class.
Weekly School Hours
4
Method of Instruction

Vorlesung 2 SWS, Übung 2 SWS

Requirements for the awarding of Credit Points

Examination: written exam

Evaluation Standard
according to examination regulations (§ 9)
Availability
As Needed
References
  • S. Skiena: The Algorithm Design Manual, Springer
  • A. Levitin: The Design and Analysis of Algorithms, Pearson
  • C. Moore, S. Mertens: The Nature of Computation, Oxford UP