21210213 - Algoritmi

The goal of the course is to provide the knowledge of the most common and useful data structures (stacks, queues, lists, trees, graphs) and of the main algorithms to handle them. The students will learn the tools to formally analyze the computational complexity of algorithms and problems. A further goal of the course is to assume familiarity with the main algorithmic approaches (divide and conquer, greedy, iterative, top-down, bottom-up). The Python programming language will be employed for exercise sessions and exams.
teacher profile | teaching materials


Recalls on computational complexity
Insight into sorting algorithms
Binary search
Elementary data structures and operations
Advanced data structures and operations
Development of data structures and algorithms in the Python language
Examples of applications with algorithms and data structures in Python language

Core Documentation

Kenneth A. Lambert. Programmazione in Python. Apogeo. 2° ed. 2018
(note: it is the same textbook as the first-year course "Fondamenti di Informatica e Programmazione")

Type of delivery of the course

Classroom lessons

Type of evaluation

A final examination will be held with the support of a computer. The test includes questions on theoretical and programming topics and programming exercises in Python. If the the test carried out by the candidate will include elements that do not allow the teacher to carry out an objective evaluation (e.g. unclear aspects, ambiguities or other) the teacher can ask for an in-depth oral interview.