Design, analysis and implementation of algorithms

Learn how to efficiently implement algorithms to solve practical problems Embedded systems often have limited resources

The runtime and resource consumption of algorithms are therefore of crucial importance. This course introduces you to basic algorithms and data structures and methods to analyze the efficiency and optimality of a program.


  • Training without downtime
  • High flexibility through extra-occupational learning
  • High efficiency and applicability through practical content
  • High learning success through the latest teaching and learning methods and innovative educational technologies such as e.g. B. virtual classrooms, learning forums, chats or mobile hardware internships

Next start date

Winter Term 2024/25
Starting on October 16th, 2024
Registration until October 1st, 2024

You will focus on those algorithms and quality aspects that are fundamental to the design and analysis of embedded systems and cyber-physical systems. In addition to the elementary data structures (e.g. fields, lists, trees, graphs, etc.), you will also get to know common programming paradigms (e.g. divide & conquer, recursion, dynamic programming, etc.). With a focus on practice-oriented computer architectures, you will learn to analyze the runtime and resource consumption of a given program and to assess the optimality of a program - both theoretically and practically.


In supervised exercises, you will put the methods you have learned into practice. You will learn how to implement efficient algorithms yourself and how to use complexity estimates and proofs of correctness.

What can the content be used for?

The learning goal is knowledge of the elementary algorithms and data structures that are necessary for the development of any large program. After successful participation, you can select the most suitable algorithms and data structures for a given task, accounting for the available resources (especially computing power and memory). You can implement these yourself and know how to use the Python standard libraries for the associated implementations. You can also theoretically analyze the algorithms, e.g. to predict the runtime depending on the amount of input data.

What previous knowledge do I need?

Basic knowledge of a higher-level, object-oriented programming language (Phyton) is recommended for this course.

See the Continuing Education Courses section for more information on expected prerequisite knowledge.


The costs including learning materials, tutorial support by a research assistant and the examination performance amount to 2,300 euros.

How does the course work?

General introductory event in Freiburg

You will meet the subject matter expert and get an overview of the content. The IEMS team will introduce you to the methods of online learning and answer your organizational questions.

E-Training & Online-Meeting

You learn flexibly with e-lectures. For self-monitoring of your learning progress, you work on programming and exercise tasks. In online meetings and via the forum, you can discuss learning content and clarify questions with fellow students as well as with tutors.

Exam and certificate

At the end of the semester you will take an exam. If you pass, you will receive a certificate from the University of Fribourg. You will acquire 6 credit points (ECTS), which can be credited to you in the Master-study program IEMS.

How is the course structured?

  1. Introduction
  2. Runtime Analysis Min Sort / Heap Sort, Induction
  3. O notation, theta, omega
  4. Average running time, associative arrays aka maps, hashing
  5. How to build a Hash Map, Universal Hashing
  6. Hashing collision handling, priority queues
  7. Dynamic Fields, Amortized Analysis
  8. Cache Efficiency, Divide and Conquer
  9. Divide and Conquer, Master Theorem
  10. Linked Lists, Binary Search Trees
  11. Balanced search trees
  12. Graphs, breadth/depth search, connected components
  13. Shortest paths, Dijkstra's algorithm
  14. Edit distance, dynamic programming

Which technical expert is in charge of this program?

Prof. Dr. Hannah Bast
Professur für Algorithmen und Datenstrukturen

Contact us!

Your personal contact
Alistair IrelandStudent Advisory Service

Do you have questions about the course or would you like to learn more about the Intelligent Embedded Microsystems continuing education program? We look forward to hearing from you.

To register, send us the completed registration form directly by email to


Download the course information in pdf format!


Download the registration form for this course!