Tecniche di Programmazione
Funzionale e Imperativa
Prof. Ivano Salvo
Corso di laurea in Informatica, 3zo anno
Avvisi
BREAKING 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.
BREAKING NEWS: Per l'edizione
2024, iscrivetevi al Classroom
TPFI-24, codice
rtnrezf.
Vecchi Avvisi
Le lezioni si sposteranno in aula
S1, Regina Elena,
edificio E (seminterrato) da
giovedì 23 febbraio,
con l'esclusione delle lezioni del
13 marzo,
22 e
29 maggio in cui torneranno in aula G0.
Le lezioni cominceranno regolarmente
lunedì 20 febbraio ore
14, aula
G0, Regina Elena,
edificio G.
Per l'edizione
2023, iscrivetevi al Classroom
TPFI-23, codice
657xyb3.
Avviso: Per l'edizione
2022, iscrivetevi al Classroom
TPFI-22, codice
nqsvha3.
Avviso: Gli studenti interessati a seguire il corso nel
2022, oltre a iscriversi al Classroom, sono pregati di inviare una mail al docente e specificare se intendono seguire il corso in presenza o da remoto.
Avviso: Eventuali studenti che non avessero seguito il corso, ma intendono sostenere l'esame, sono pregati di contattare il docente.
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 2023/24 - II semestre
lunedì |
ore 14:00-16:00 |
aula S1, RM113 |
(occasionalmente ore 13:00) |
giovedì |
ore 14:00-16:00 |
aula S1, RM113 |
|