Skip to content

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.

Apr 2023Distributed systems

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
VincenzoImp/algorithms-course-exercisesTwelve weeks of exercise sessions for an undergraduate algorithms course: statements, worked solutions, and slides.Jupyter Notebook

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.