Tags:
create new tag
view all tags

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.

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

  • 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

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


Edit | Attach | Watch | Print version | History: r12 < r11 < r10 < r9 < r8 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r12 - 2021-02-26 - IvanoSalvo






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
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