- reading0: Introduction to decision making, design, implementation, complexity
- reading1: 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: Modeling and basics
- Tutorial1-solutions
- reading2: 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
- reading3: 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
- reading4: 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