Programmazione avanzata
A.A. 2021/2022
Learning objectives
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.
Expected learning outcomes
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.
Periodo: Primo semestre
Modalità di valutazione: Esame
Giudizio di valutazione: voto verbalizzato in trentesimi
Corso singolo
Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.
Course syllabus and organization
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.
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
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.
È 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:
- http://wcazzolapa.ariel.ctu.unimi.it
- 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.
- http://wcazzolapa.ariel.ctu.unimi.it
- 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.
Professor(s)