Tecniche di Programmazione
Funzionale e Imperativa
Prof. Ivano Salvo
Corso di laurea in Informatica, 3zo anno
Avvisi
Per partecipare a distanza, il link alla riunione Meet è:
https://meet.google.com/tta-hjmb-ahh
Il corso comincerà
lunedì 1 marzo in modalità
mista (a meno di imprevisti).
Gli studenti interessati a seguire 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.
- 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.
- 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.
- Ogni anno verranno selezionate 4-6 perle di programmazione imperativa.
- e 4-6 perle di programmazione funzionale.
- Testi Consigliati
- R. Bird: Thinking Functionally with Haskell. Cambridge University Press (2015).
- B.W.Kernigham, D. Ritchie: The C Programming Language (2nd edition), Pearson (1988).
- Dispense
- (a seguire, durante il corso)
- Testi di consultazione e di ispirazione
- E. W. Dijkstra: A Discipline of Programming, Prentice Hall (1976).
- R. Bird: Pearls of Functional Algorithm Design, Cambridge University Press (2010).
- R. Bird, P. Wadler: Introduction to Functional Programming, Prentice Hall (1988). *
- A. Oram, G. Wilson (eds.): Beautiful Code, O'Reilly (2008).
- J. Bentley: Programming Pearls (1986) and More Programming Pearls (1988), Addison Wesley.
Orario delle Lezioni 2020/21 - II semestre