Programmazione avanzata

A.A. 2024/2025
6
Crediti massimi
48
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
L'insegnamento ha l'obiettivo di esporre gli studenti ad alcune tecniche e costrutti avanzati di programmazione, di dimostrarne l'applicazione nella soluzione di specifici problemi e di stimolare e migliorare il proprio pensiero critico quando applicato nella risoluzione di problemi anche complessi.
Risultati apprendimento attesi
Lo studente dovrà essere in grado di applicare le tecniche e i concetti presentati nell'insegnamento nella risoluzione di problemi complessi. Lo studente inoltre dovrà essere in grado di scegliere la soluzione e la tecnica migliore da applicare tra quelle studiate, dovrà essere in grado di realizzare la soluzione individuata e di argomentare le scelte fatte.
Corso singolo

Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.

Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Primo semestre
Metodi didattici
Le lezioni saranno erogate in streaming su YouTube e saranno fruite sincronamente sulla base dell'orario del primo semestre. A supporto ci sarà un canale telegram per l'interazione col docente. I dettagli saranno riportati sulla pagina dell'insegnamento gestita dal docente.

Programma e materiale di riferimento
Il programma e il materiale di riferimento non subiranno variazioni.

Modalità di verifica dell'apprendimento
L'esame cambierà da scritto a sessioni orali di live coding gestite sulla piattaforma Microsoft Teams.

Programma
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
Prerequisiti
Saper scrivere e debuggare programmi che usano i costrutti base di programmazione. Avere conoscenze di problem solving. Conoscere e sapere usare con profitto almeno un linguaggio di programmazione.

È consigliabile avere conseguito almeno un insegnamento di programmazione nella laurea triennale ed uno su algoritmi e strutture dati.
Metodi didattici
Lezioni Frontali ed alcune esercitazioni in preparazione dell'esame.
Materiale di riferimento
Web site:
- https://cazzola.di.unimi.it/pa.html

Libri suggeriti
- 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.
I primi due per gli studenti che necessitano imparare Python o rafforzare le proprie conoscienze di programmazione di base. L'ultimo è il testo di riferimento dell'insegnamento.
Modalità di verifica dell’apprendimento e criteri di valutazione
L'esame è scritto (al calcolatore) e durerà quattro ore. Ogni appello propone due esercizi che testeranno le capacità di programmazione e problem solving acquisite dagli studenti durante l'insegnamento.
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Docente: Cazzola Walter
Turni:
Turno
Docente: Cazzola Walter