MSc
Algorithms Course Exercises
Twelve weeks of exercise sessions for an undergraduate algorithm-design course: problem statement, worked reasoning, Python, and the slides used to teach each one.
Teaching material for the exercise sessions of an undergraduate algorithm-design course at Sapienza: thirty problems across twelve weeks, each written out as the statement, a recap of the definitions it needs, and the reasoning toward a solution.
- Context
- Teaching assistant, Sapienza, spring 2023
- Contents
- 12 sets · 30 problems · 8 slide decks
- Stack
- Python · Jupyter · NetworkX · LaTeX
- Repository
- VincenzoImp/algorithms-course-exercises
What it is
Each week ships as three artefacts: a notebook with the problems worked through, a LaTeX-typeset PDF of the solutions, and, for the first eight weeks, the slide deck used to present them. The problems are in Italian, because the course was.
The material is graph-heavy: classifying DFS edges, strongly connected components, orienting an undirected graph into a DAG, bridges, why Dijkstra breaks on negative weights, and several minimum-spanning-tree properties. Then divide and conquer, dynamic programming, and a set of backtracking generation problems. The Python is deliberately plain: graphs as adjacency-list dictionaries, with NetworkX used only to draw the examples.
What I took from it
The material separates the problem statement, the required definitions and the reasoning before presenting code. That structure gives a student a way to inspect why an algorithm applies and which assumptions its result depends on. The implementation then makes the argument executable.