Advanced programming

A.Y. 2019/2020
Overall hours
Learning objectives
The course 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
These objectives are measured via a combination of three components: the project realisation, the project technical report and the oral discussion. The final grade is formed by assessing the software developed, the project report, and then using the oral discussion for fine tuning.
Course syllabus and organization

Single session

Lesson period
First semester
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
Test Driven Development
Generative programming
Decorators e Metaclasses
Prerequisites for admission
Knowing how to write and debug programs that use the basic constructs of programming. Knowing how to solve an algorithmic problem. Knowing at least one programming language.

It is strongly suggested to have passed at least one exam about programming in the bachelor degree and one about algorithms and data structures
Teaching methods
Frontal lectures and some exercises in the exam preparation.
Teaching Resources
Web Site:

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 are for those that needs to learn Python or to strength their basic programming skills. The last one covers most of the course program.
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.
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
Professor: Cazzola Walter