- 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