Syllabus
This years course structure
Lectures
In our lectures, we mostly refrain from showing you any code. Instead, we will focus on explaining the concepts and how they can be used to solve problems. The tutorials will then show you step-by-step how to implement the concepts in Python.
We were rather ambitious in the design of the course in the course module, thus we will not be able to cover all topics there. However, we have chosen the most important topics from our perspective that will lay a good foundation for interested students to continue learning on their own.
Welcome and Optimal Stopping (I)
- Overview of the course and its objectives
- Introduction to algorithmic thinking
- Optimal Stopping
- Programming: First Steps in Python
Explore & Exploit (II)
- Multi-armed Bandit Problem
- Balancing exploration and exploitation
- Programming: Simulating the Multi-armed Bandit Problem
Caching (III)
- Principles of caching and memory management
- Least Recently Used (LRU) and other caching strategies
- Programming: Implementing an LRU cache
Scheduling (IV)
- Task scheduling algorithms
- Trade-offs between efficiency and fairness
- Programming: Implementing scheduling algorithms
Randomness (V)
- Role of randomness in algorithms
- Monte Carlo methods and their applications
- Programming: Monte Carlo simulation
Computational Kindness (VI)
- Algorithms for social good
- Ethical considerations in algorithm design
- Quick review of key concepts
- Brief student presentations
- Open discussion and Q&A