Applied Algorithms and Data Structures

TitleTimeRoomInstructor
Applied Algorithms and Data Structures12.10.2022 13:15 - 14:45 (Wed)Meggendorfer, Tobias
Applied Algorithms and Data Structures19.10.2022 13:15 - 14:45 (Wed)Meggendorfer, Tobias
Applied Algorithms and Data Structures02.11.2022 13:15 - 14:45 (Wed)Meggendorfer, Tobias
Applied Algorithms and Data Structures09.11.2022 13:15 - 14:45 (Wed)Meggendorfer, Tobias
Applied Algorithms and Data Structures16.11.2022 13:15 - 14:45 (Wed)Meggendorfer, Tobias
Applied Algorithms and Data Structures23.11.2022 13:15 - 14:45 (Wed)Meggendorfer, Tobias
Applied Algorithms and Data Structures30.11.2022 13:15 - 14:45 (Wed)Meggendorfer, Tobias
Applied Algorithms and Data Structures07.12.2022 13:15 - 14:45 (Wed)Meggendorfer, Tobias
Applied Algorithms and Data Structures14.12.2022 13:15 - 14:45 (Wed)Meggendorfer, Tobias
Applied Algorithms and Data Structures11.01.2023 13:15 - 14:45 (Wed)Meggendorfer, Tobias
Applied Algorithms and Data Structures18.01.2023 13:15 - 14:45 (Wed)Meggendorfer, Tobias
Applied Algorithms and Data Structures25.01.2023 13:15 - 14:45 (Wed)Meggendorfer, Tobias
Description: 
This course aims to teach the concepts of efficient algorithms through a practical, hands-on format. Each week treats a particular class of problems, beginning with basic data structures and simple algorithms, and continuing with more advanced topics, e.g. shortest path or dynamic programming. For each topic, an explanatory lecture and an accompanying set of problems is given. Each participant then is tasked to solve these problems on their own within one week. Each problem describes, through a story, a concrete programming task. “Solving” means to provide an implementation computing the correct answers within a given time-limit. Participants can upload solution attempts to an online platform, which immediately gives feedback on the solution attempt and no limit on the number of attempts. Solution ideas for each problem are presented in the next lecture. The skills obtained in this course will aid you with implementation-related problems of your research. In particular, you learn to (i) analyze a concrete question from the algorithmic perspective, (ii) model the problem appropriately, (iii) estimate the time and memory requirements, and (iv) decide which algorithms can be adapted to solve the problem efficiently. Disclaimer: This course heavily relies on self-study and trying to solve problems on your own. Depending on your experience, it will require more work than some other courses.
Capacity: 
3/50
Course Code: 
C_CS-522_F22
Course instructor(s): 
Tobias Meggendorfer
Course type: 
Taught course
Course tags: 
Elective
Course level: 
Advanced/specialized
Primary Track: 
Computer Science
Secondary Track(s): 
Data Science & Scientific Computing
Course format: 
Online
Duration: 
Full semester
ECTS: 
6
Semester: 
Fall (1&2)
Minimum number of participants: 
10
Target audience: 
Students with at least some programming experience and keen interest in problem solving.
Prerequisites: 
Basic knowledge of at least one programming language, e.g. C++, Java, or Python. Only the respective standard libraries are used, thus knowledge of Boost, scipy/numpy, etc. is not required.
Teaching format: 
Online lecture accompanied by self-study for each week’s homework, no recitations. Participation in the lectures is not required (though recommended). The submission platform offers sending of “clarification requests” to ask for advice with a problem.
Assessment form(s): 
Based on the number of solved problems, i.e. completed homework. Submissions will be checked for plagiarism.
Grading scheme: 
Numeric grades (1-5)
Course Category: 
Credit Course
Academic Year: 
AY 2022/23