Advanced Programming

A.Y. 2026/2027
6
Max ECTS
48
Overall hours
SSD
INFO-01/A
Language
Italian
Learning objectives
The teaching aims to expose students to some advanced programming techniques and constructs, to demonstrate their application in solving specific problems and to stimulate and improve their critical thinking when applied in the resolution of even complex problems.
Expected learning outcomes
The student must be able to apply the techniques and concepts presented in the teaching to solve complex problems. The student must also be able to choose the best solution and the best technique to be applied among those studied, he must be able to realize the identified solution and to argue the choices made.
Single course

This course cannot be attended as a single course. Please check our list of single courses to find the ones available for enrolment.

Course syllabus and organization

Single session

Responsible
Lesson period
First four month period
Course syllabus
Course Syllabus
- Comprehensions, Map/Filter and Reduce
- Closures, Continuations and Lazy Evaluation (Generators)
- Type Inference and Type Systems
- Dynamic e Duck Typing
- Object-Based vs Object Oriented Language
- Late binding versus Duck typing
- Iterators
- Test Driven Development
- Generative programming
- Decorators e Metaclasses
- Problem Solving
Prerequisites for admission
Be able to write and debug programs that use basic programming constructs. Have problem-solving skills. Know and be able to effectively use at least one programming language.

It is recommended to have completed at least one programming course and one course on algorithms and data structures during the bachelor's degree.
Teaching methods
Lectures, guided problem-solving sessions conducted in a flipped classroom format, and some computer-based exercises in preparation for the exam.
Teaching Resources
Web Site:
- https://cazzola.di.unimi.it/pa.html

Suggested Books
- Jennifer Campbell, Paul Gries, Jason Montojo, and Greg Wilson. Practical Programming: An Introduction to Computer Science Using Python. The Pragmatic
Bookshelf, second edition, 2009.
- Mark Lutz. Learning Python. O'Reilly, third edition, November 2007.
- Mark Pilgrim. Dive into Python 3. Apress*, 2009.
The first two books are intended for students who need to learn Python or strengthen their basic programming skills. The last one is the main reference textbook for the course.
Assessment methods and Criteria
The exam is written (at the computer) and it will last 4 hours. Each session proposes two exercises that test the advanced programming/problem solving techniques the student learned during the course.
INFO-01/A - Informatics - University credits: 6
Lessons: 48 hours
Professor: Cazzola Walter
Shifts:
Turno
Professor: Cazzola Walter
Professor(s)