Tecniche di Programmazione
Funzionale e Imperativa
Prof. Ivano Salvo
Corso di laurea in Informatica, 3zo anno
Avvisi 2025-26
BREAKING NEWS: This year, if any foreign student (for example from ACSAI) attends the course, the lessons will be held in English.
In any case, course material will be translated in english.
If some italian student would prefer to have course material in italian, please subscribe to the 2025 classroom (see below), where you can find the most updated italian versions.
BREAKING NEWS: Per l'edizione
2026, iscrivetevi al Classroom
TPFI-26
, codice
za6betxk.
Le lezioni cominceranno
regolarmente,
martedì, 24 febbraio 2026 alle ore
10.
BREAKING NEWS: Orario del corso (2026):
- martedì 10-13 (aula Magna della palazzina C di viale Regina Elena (RM111)) e
- giovedì 11-13 (aula Magna della palazzina C di viale Regina Elena (RM111)).
Vecchi Avvisi
NEWS: Finalmente ufficializzato l'orario del corso:
- giovedì 11-13 (aula 2L di Castro Laurenziano) e
- venerdì 12-15 (aula Magna della palazzina C di viale Regina Elena (RM111)).
Le lezioni cominceranno
regolarmente,
giovedì, 27 febbraio 2025 alle ore
11.
NEWS: Per l'edizione
2025, iscrivetevi al Classroom
TPFI-25
, codice
itdft22.
NEWS: Finalmente ufficializzato l'orario del corso: lunedì 13-16 e giovedì 14-16.
Di norma la lezione del lunedì sarà 14-16 e occasionalmente si farà la V ora settimanale nell'ora 13-14.
Le lezioni sono in
aula S1, nella palazzina
E di viale
Regina Margherita 295 (
RM113).
Le lezioni cominceranno
regolarmente,
lunedì, 26 febbraio 2024 alle ore
14.
NEWS: Per l'edizione
2024, iscrivetevi al Classroom
TPFI-24
, codice
rtnrezf.
Descrizione del Corso
Il corso mira a introdurre il paradigma di programmazione funzionale, attraverso lo studio del linguaggio Haskell.
Viene inoltre fatto un confronto con il paradigma imperativo e quello funzionale.
Vengono infine introdotti metodi per ragionare sulla correttezza dei programmi in entrambi i paradigmi.
1. Programmazione Funzionale. [14 lezioni]
- Concetti base di Haskell: tipi, funzioni, definizioni ricorsive.
- Polimorfismo, classi, tipi definiti dall'utente, funzioni di ordine superiore.
- Call-by-name e valutazione lazy. Tipi di dato infiniti.
- Trattamento di aspetti non-funzionali (IO, eccezioni, stato, etc.) in Haskell: Funtori, Applicativi e Monadi.
- Sviluppo di programmi corretti e trasformazioni di programmi: ragionamento equazionale.
2. Programmazione Imperativa. [7 lezioni]
- Ripasso di programmazione base in C.
- Gestione esplicita della memoria in C, alias, side-effects.
- Confronti e contaminazioni I: programmazione funzionale in C.
- Confronti e contaminazioni II: programmazione imperativa in Haskell.
- Sviluppo di programmi corretti in C: asserzioni logiche. Limiti di questa metodologia nella programmazione imperativa.
3. Perle di Programmazione Funzionale e Imperativa. [5 lezioni]
- Ogni anno verranno selezionate 4-6 perle di programmazione imperativa.
- e 4-6 perle di programmazione funzionale.
Orario delle Lezioni 2024/25 - II semestre
| lunedì |
ore 10:00-13:00 |
aula Magna, RM111 |
|
| giovedì |
ore 11:00-13:00 |
aula Magna, RM111 |
|