L'importanza dei Linguaggi di Programmazione nella pratica della produzione del software.Giovedì 4 marzo 2021 - Lezione 2 (In principio era il Lambda-Calcolo)
Breve introduzione ai principali paradigmi di programmazione: imperativo, funzionale, logico, a oggetti.
Cenni all'evoluzione dei Linguaggi di Programmazione.
Breve introduzione ai fondamenti teorici della programmazione funzionale: il lambda-calcolo.Lunedì 8 marzo 2021 - Lezione 3 (Quegli Strani Tipi Polimorfi)
Termini, riduzioni, valori.
Proprietà di confluenza e di standardizzazione delle riduzioni.
Programmare in lambda calcolo: numerali di Church, if-then-else, ricorsione, combinatore di punto fisso.
Primi esempi in Haskell: combinatori del lambda-calcolo.Giovedì 11 marzo 2021 - Lezione 4 (Verso un Ordine Superiore: Funzioni e Funzionali)
Tipi polimorfi: l'identità polimorfa e numerali di Church. Tipo principale di un termine.
Funzioni come first-class citizen.Lunedì 15 marzo 2021 - Lezione 5 (Una Questione di Classe)
Programmazione su liste in Haskell.
Funzionali di ordine superiore:map
,foldr
,zipWith
. Applicazioni.
Polimorfismo limitato in Haskell: le classi.Giovedì 18 marzo 2021 - Lezione 6 (Alla Ricerca del Tipo Principale)
Le classi in Haskell. Classi predefinite:Eq
,Ord
,Num
, etc.
Definizione di classi e istanze.
Sistema di assegnamento dei tipi.Lunedì 22 marzo 2021 - Lezione 7 (Astrazioni Categoriali: Funtori e Applicativi)
L'algoritmo di Hindley-Milner per il calcolo del tipo principale.
Cenni alla sua correttezza e completezza.
Le classiGiovedì 25 marzo 2021 - Lezione 8 (Equivalenze Algebriche e Trasformazioni di Programmi)Functor
eApplicative
.
Assiomatizzazione delle leggi chefmap
e<*>
devono soddisfare.
Applicazioni a programmazione generica.
Equivalenze algebriche tra programmi: dimostrazioni di correttezza e trasformazioni di programmi.Lunedì 29 marzo 2021 - Lezione 9 (Prime Perle: Sottosequenza di Somma Massima e Minimo Intero Libero)
Uso di funzioni inefficienti come specifica e di dimostrazioni algebriche per ricavare equivalenti funzioni efficienti.
Esempi:reverse
lineare,scanl
lineare etc.
Alcune utili leggi: fusion law per foldr.
Applicazione delle trasformazioni di programmi a famosi problemi di programmazione.Giovedì 8 aprile 2021 - Lezione 10 (The Importance of Being Lazy)
Perla 1: il problema del minimo intero libero.
Perla 2: il problema della sottosequenza di somma massima.
Valutazione call-by-name nella pratica di programmazione: efficienze e inefficienze.Lunedì 12 aprile 2021 - Lezione 11 (Perle di Laziness I: Ulam e Hamming Numbers)
Definizione di strutture dati infinite grazie alla laziness.
Calcolo di due successioni famose con programmi circolari: numeri di Ulam e Hamming numbers.Giovedì 15 aprile 2021 - Lezione 12 (Perle di Laziness II: Primi, primo amore)
Alcuni `algoritmi' funzionali per il calcolo dei numeri primi.Lunedì 19 aprile 2021 - Lezione 13 (Effectful Programming in Haskell: Monadi)
- Trial division
- Crivello di Eratostene di Turner (vero o presunto) e crivello di Bird.
- Crivello di Eulero.
Eccezioni e altri aspetti non funzionali.Giovedì 22 aprile 2021 - Lezione 14 (More on Monads and More)
Utilizzo delle monadi per trattare:
- eccezioni;
- stato mutabile;
- input/output.
Monadi e leggi categoriali.Lunedì 26 aprile 2021 - Lezione 15 (Cambiare il Mondo: Input/Output in Haskell)
Altre astrazioni di ispirazione categoriale: monoidi, Foldable e Traversable.
Il problema dell'Input/Output in Haskell.Giovedì 29 aprile 2021 - Lezione 16 (Goodbye Haskell: Ultima Perla. Unbeatable Tic-Tac-Toe)
do-notation.
Ultima Perla: Tic-Tac-Toe in Haskell.Lunedì 3 maggio 2021 - Lezione 17 (Indagini su un Programma Iterativo: Pre-, Post-condizioni, Ivarianti)
Giovedì 6 maggio 2021 - Lezione 18 (Parli del Diavolo e Spuntano i Puntatori)
Lunedì 10 maggio 2021 - Lezione 19 (Lo Strano Caso di Dr. Array e Mr. Pointer)
Giovedì 13 maggio 2021 - Lezione 20 (Vettori e Matrici Variabili e Dinamiche)
Lunedì 17 maggio 2021 - Lezione 21 (Dati Mutabili e Immutabili: il caso delle Liste)
Giovedì 20 maggio 2021 - Lezione 22 (Programmazione su Liste in C)
Lunedì 24 maggio 2021 - Lezione 23 (Perle di Stile e di Programmazione)
Lunedì 31 maggio 2021 - Lezione 24 (Polimorfismo in C)
--
![]() |
![]() |
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica ![]() |
|
![]() |
![]() |