Teaching

Parallel to my studies, I was highly involved in teaching. As Albert Einstein said, "If you can't explain it simply, you don't understand it well enough". Teaching pushed me to think to fundamental concepts and explain them as clearly as possible, which ultimately made me understand the topics even better. In many cases, teaching assistants pick their favorite course and stick to it over the years. I did it differently, working on multiple areas: from Theoretical Computer Science to Software Engineering, and also a bit of Computer Networks.

Algorithms and Data Structures

Topics: Introduction to Algorithm Analysis (runtime, asymptotic notation, induction, divide-and-conquer, recursion), Sorting and Searching, Dynamic Programming, Graph algorithms (DFS, BFS, Topological sorting, algorithms for Shortest Paths, Minimum Spanning Trees, ...), Data Structures (queue, stack, heaps, binary search tree, AVL trees, red-black trees).

My responsibilities included:

Course Website Summary Slides HS21 PVK Script

Algorithms and Probability

Topics: Graph Theory (Eulerian/ Hamilton paths, Matching, Coloring, Articulation nodes, Flows in Networks, ...), Introduction to Probability Theory (conditional probability, independence, Bayes formula, random variables, Chernoff bounds, ...), Las Vegas and Monte Carlo algorithms, Selection of Randomized Algorithms (Hashing, Short Longest Paths, Min Cuts, Smallest Enclosing Circle, Jarvis' Wrap, ...).

My responsibilities included:

Course Website Summary Quiz

Parallel Programming

Topics: Introduction to Parallelism (Threads, Pipelining, Amdahl's and Gustafson's laws), Java techniques (Executor Service, Fork and Join, ...), how to ensure Mutual Exclusion (Locks, Atomic Operations, Transactional Memory), Distributed Systems (Consensus, Linearizability, Sequential Consistency, ...), Advanced Techniques (volatile fields, MPI, ...), and Parallel Algorithms.

My responsibilities included:

Course Website Summary

Computer Networks

Topics: Ideas and protocols from each OSI layer (DNS, CDNs, HTTP, TCP/ UDP, QUIC, Routing, BGP, ...)

My responsibilities included:

Course Website