Please note! Course description is confirmed for two academic years (1.8.2018-31.7.2020), which means that in general, e.g. Learning outcomes, assessment methods and key content stays unchanged. However, via course syllabus, it is possible to specify or change the course execution in each realization of the course, such as how the contact sessions are organized, assessment methods weighted or materials used.
LEARNING OUTCOMES
In this course, we study the principles of efficient algorithm design and you will learn how to systematically approach new algorithmic problems. You will be able to formally argue why your algorithm works correctly and identify the challenges you need to overcome to solve a given problem. You will also learn to analyse the efficiency of algorithms and algorithmic approaches prior to their implementation.
Credits: 5
Schedule: 09.09.2020 - 11.12.2020
Teacher in charge (valid 01.08.2020-31.07.2022): Jara Uitto
Teacher in charge (applies in this implementation): Jara Uitto
Contact information for the course (valid 07.08.2020-21.12.2112):
Responsible professor
- Jara Uitto
Teaching assistants
- Pisl Jan
- Nikitin Alexander
- Sander Aarts
CEFR level (applies in this implementation):
Language of instruction and studies (valid 01.08.2020-31.07.2022):
Teaching language: English
Languages of study attainment: English
CONTENT, ASSESSMENT AND WORKLOAD
Content
Valid 01.08.2020-31.07.2022:
Algorithm design paradigms: divide-and-conquer, greedy algorithms, dynamic programming. Principles of analysis of algorithms: correctness, potential functions, duality, randomization
Applies in this implementation:
We will mainly follow the book by Jeff Erickson http://jeffe.cs.illinois.edu/teaching/algorithms/book/Algorithms-JeffE.pdf
We will cover the topics particularly from chapters 1, 2, 4, 5, 7, 12
Furthermore, we discuss some basic concepts in randomized algorithms and parallel/distributed algorithms.
Assessment Methods and Criteria
Valid 01.08.2020-31.07.2022:
Exercise sessions, programming assignments, graded homework, and exam.
Applies in this implementation:
The topics are divided among 8 weeks of lectures. In 2020, the lectures are online. Depending on the topic, the lecture videos (divided into several pieces) will sum up to roughly 2 hours on average.
There are 8 exercise sessions, one per the 8 weeks of lectures. Depending on the Corona situation, these sessions will either be "live" or arranged as a virtual Q&A session. For the best grade, you are expected to be able to solve these exercises with the help of the Q&A sessions.
There is one graded exercise per lecture week that is submitted and evaluated.
There are 4 programming exercises that are evaluated by an automated grader.
Due to Corona, there is no exam in 2020.
Workload
Valid 01.08.2020-31.07.2022:
Lectures. Exercise sessions. Exam. Independent work. Graded homework.
Applies in this implementation:
8x2 hours of lectures
8x2 hours of independent study to learn the material
4x3 hours to solve the programming exercises
Up to 70 hours for the weekly exercises
DETAILS
Study Material
Valid 01.08.2020-31.07.2022:
Cormen, Leiserson, Rivest, Stein. Introduction to algorithms.
Applies in this implementation:
Algorithms book by Jeff Erickson http://jeffe.cs.illinois.edu/teaching/algorithms/book/Algorithms-JeffE.pdf
Substitutes for Courses
Valid 01.08.2020-31.07.2022:
Replaces the courses T-79.4202 Principles of Algorithmic Techniques and T-106.4100 Design and Analysis of Algorithms.
Prerequisites
Valid 01.08.2020-31.07.2022:
First year engineering mathematics, together with an introduction to probability theory (e.g. MS-A05XX), and programming skills (e.g. CS-A111X). Familiarity with basic data structures (e.g. CS-A114X) is an asset.
SDG: Sustainable Development Goals
7 Affordable and Clean Energy
9 Industry, Innovation and Infrastructure