Programmazione avanzata
A.A. 2019/2020
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
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 corso di programmazione nella laurea triennale ed uno su algoritmi e strutture datii.
È consigliabile avere conseguito almeno un corso di programmazione nella laurea triennale ed uno su algoritmi e strutture datii.
Metodi didattici
Lezioni Frontali ed alcune esercitazioni in preparazione dell'esame.
Materiale di riferimento
Web site:
http://wcazzolapa.ariel.ctu.unimi.it
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 del corso.
http://wcazzolapa.ariel.ctu.unimi.it
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 del corso.
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 il corso.
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Docente:
Cazzola Walter
Turni:
-
Docente:
Cazzola WalterProfessor(s)