Abstract | The courses covers the foundations of design and analysis of algorithms and data structures, including graph theory and graph problems. It also introduces generic and parallel programming. |
Learning objective | Understanding design, analysis and implementation of fundamental algorithms and data structures. Overview of the concepts of generic and parallel programming. Hands-on experience with implementing the aforementioned in C++. |
Content | * Asymptotic runtime (algorithmic complexity) * Fundamental algorithmic problems, e.g. searching, sorting, shortest paths, spanning trees * Classical data structures, e.g. search trees, balanced trees, heaps, hash tables * Graph theory and graph problems * Problem solving strategies as design patterns for algorithms, e.g. induction, divide and conquer, backtracking, dynamic programming * Generic programming: C++ templates higher-order functions, lambdas, closures * Parallel programming: (in)dependence of computations, parallelism and concurrency, shared memory, races, mutual exclusion, communication and synchronisation
Knowledge obtained in the lecture is deepened through practical and/or programming exercises (C++, Code Expert). |
Lecture notes | All material (slides, lecture recordings, examples, exercises, etc.) will be published on the course website. |
Literature | * T. Ottmann, P. Widmayer: Algorithmen und Datenstrukturen, Spektrum-Verlag, 5. Auflage, Heidelberg, Berlin, Oxford, 2011 * T. H. Cormen, C. E. Leiserson, R. Rivest, C. Stein: Algorithmen - Eine Einführung, Oldenbourg, 2010 * B. Stroustrup, The C++ Programming Language, 4th Edition, Addison-Wesley, 2013. * B. Stroustrup, A Tour of C++, 3rd Edition, Addison-Wesley, 2022 |
Prerequisites / Notice | Prerequisite: Computer Science I |
Competencies | Subject-specific Competencies | Concepts and Theories | assessed | | Techniques and Technologies | assessed | Method-specific Competencies | Analytical Competencies | assessed | | Decision-making | fostered | | Media and Digital Technologies | assessed | | Problem-solving | assessed | Social Competencies | Communication | fostered | | Cooperation and Teamwork | fostered | Personal Competencies | Creative Thinking | fostered | | Critical Thinking | fostered |
|