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
Winter term 2023/24
Starting on October 16th, 2023
Registration until October 1st, 2023
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.
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.
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.
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.
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.
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.
- Runtime Analysis Min Sort / Heap Sort, Induction
- O notation, theta, omega
- Average running time, associative arrays aka maps, hashing
- How to build a Hash Map, Universal Hashing
- Hashing collision handling, priority queues
- Dynamic Fields, Amortized Analysis
- Cache Efficiency, Divide and Conquer
- Divide and Conquer, Master Theorem
- Linked Lists, Binary Search Trees
- Balanced search trees
- Graphs, breadth/depth search, connected components
- Shortest paths, Dijkstra's algorithm
- Edit distance, dynamic programming
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 firstname.lastname@example.org.