- lecture0: Introduction to decision making, design, implementation, complexity
- lecture1: Graph theory, Eulerian, Hamiltonian, Spanning tree & Graph coloring
- Practice1_1: Basic examples on graph theory
- Practice1_2: Minimal spanning tree (Prim)
- Practice1_3: Minimal Spanning tree (Kruskal)
- Practice1_4: graph coloring, Sudoku
- Tutorial1: Modelling and basics
- Tutorial1-solutions
- lecture2: Paradigm, Divide&Conquer, Dynamic programming
- Practice2_1: Divide&Conquer Binary search algorithm
- Practice2_2: Dynamic programming, the coin changing problem (simple and all combinations)
- Tutorial2: Paradigm
- Tutorial2-solutions
- lecture3: Shortest path problem, Dijkstra, DAG, Ford-Bellman, Floyd-Warshall
- Practice3_1: Step by step Dijkstra’s algorithm
- Practice3_2: Step by step Ford-Bellman’s algorithm
- Practice3_3: Step by step transitive closure and Floyd-Warshall’s algorithm
- Tutorial3: Shortest path
- Tutorial3-solutions
- lecture4: Min cut problem, Max flow problem, augmenting path problem, Ford-Fulkerson
- Practice4_1: Step by step Ford-Fulkerson’s algorithm
- Practice4_2: Min-cut problem