Advanced Programming
A.Y. 2024/2025
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.
Lesson period: First semester
Assessment methods: Esame
Assessment result: voto verbalizzato in trentesimi
Single course
This course can be attended as a single course.
Course syllabus and organization
Single session
Responsible
Lesson period
First semester
Teaching Methods
All the lectures will be provided in streaming on YouTube in the scheduled time frame. The interaction with the professor will be enabled through a dedicated telegram channel. All details will be published on the course webpage.
Syllabus and Books
Nothing will change on both the syllabus and the used material.
Exams
We will do a live coding examination on Microsoft Teams.
All the lectures will be provided in streaming on YouTube in the scheduled time frame. The interaction with the professor will be enabled through a dedicated telegram channel. All details will be published on the course webpage.
Syllabus and Books
Nothing will change on both the syllabus and the used material.
Exams
We will do a live coding examination on Microsoft Teams.
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
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
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
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:
- 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 are for those that needs to learn Python or to strength their basic programming skills. The last one covers most of the course program.
- 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 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
Shifts:
Turno
Professor:
Cazzola WalterProfessor(s)