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.

Target group: Students with 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.

Evaluation: Based on the number of solved problems, i.e. completed homework. Submissions will be checked for plagiarism.

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.

ECTS: 6 Year: 2021

Track segment(s):
CS-ALG Computer Science - Algorithms and Complexity
DSSC-OPT Data Science and Scientific Computing - Optimization

Teacher(s):
Tobias Meggendorfer

Teaching assistant(s):

If you want to enroll to this course, please click: REGISTER