Tecniche di Programmazione

Funzionale e Imperativa

Prof. Ivano Salvo

Corso di laurea in Informatica, 3zo anno

Avvisi

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.

Programma del Corso

1. Programmazione Funzionale.

  1. Concetti base di Haskell: tipi, funzioni, definizioni ricorsive.
  2. Polimorfismo, classi, tipi definiti dall'utente, funzioni di ordine superiore.
  3. Call-by-name e valutazione lazy. Tipi di dato infiniti.
  4. Trattamento di aspetti non-funzionali (IO, eccezioni, stato, etc.) in Haskell: Funtori, Applicativi e Monadi.
  5. Sviluppo di programmi corretti e trasformazioni di programmi: ragionamento equazionale.

2. Programmazione Imperativa.

  1. Ripasso di programmazione base in C.
  2. Gestione esplicita della memoria in C, alias, side-effects.
  3. Confronti e contaminazioni I: programmazione funzionale in C.
  4. Confronti e contaminazioni II: programmazione imperativa in Haskell.
  5. Sviluppo di programmi corretti in C: asserzioni logiche. Limiti di questa metodologia nella programmazione imperativa.

3. Perle di Programmazione Funzionale e Imperativa.

  1. Ogni anno verranno selezionate 4-6 perle di programmazione imperativa.
  2. e 4-6 perle di programmazione funzionale.

Materiali Didattici

Orario delle Lezioni 2020/21 - II semestre

lunedý 14-16 aula G0 (Regina Elena, ed. G) https://meet.google.com/tta-hjmb-ahh
giovedý 16-19 aula G0 (Regina Elena, ed. G) https://meet.google.com/tta-hjmb-ahh


Diario delle Lezioni


Esami



This topic: TPFI > WebHome
Topic revision: r17 - 2021-06-12 - IvanoSalvo
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback