Tags:
create new tag
view all tags

Diario delle Lezioni 2021

Lunedì 3 marzo 2021 - Lezione 1 (La Babele dei Linguaggi di Programmazione)
L'importanza dei Linguaggi di Programmazione nella pratica della produzione del software.
Breve introduzione ai principali paradigmi di programmazione: imperativo, funzionale, logico, a oggetti.
Cenni all'evoluzione dei Linguaggi di Programmazione.

Giovedì 4 marzo 2021 - Lezione 2 (In principio era il Lambda-Calcolo)

Breve introduzione ai fondamenti teorici della programmazione funzionale: il lambda-calcolo.
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.

Lunedì 8 marzo 2021 - Lezione 3 (Quegli Strani Tipi Polimorfi)

Primi esempi in Haskell: combinatori del lambda-calcolo.
Tipi polimorfi: l'identità polimorfa e numerali di Church. Tipo principale di un termine.

Giovedì 11 marzo 2021 - Lezione 4 (Verso un Ordine Superiore: Funzioni e Funzionali)

Funzioni come first-class citizen.
Programmazione su liste in Haskell.
Funzionali di ordine superiore: map, foldr, zipWith. Applicazioni.

Lunedì 15 marzo 2021 - Lezione 5 (Una Questione di Classe)

Polimorfismo limitato in Haskell: le classi.
Le classi in Haskell. Classi predefinite: Eq, Ord, Num, etc.
Definizione di classi e istanze.

Giovedì 18 marzo 2021 - Lezione 6 (Alla Ricerca del Tipo Principale)

Sistema di assegnamento dei tipi.
L'algoritmo di Hindley-Milner per il calcolo del tipo principale.
Cenni alla sua correttezza e completezza.

Lunedì 22 marzo 2021 - Lezione 7 (Astrazioni Categoriali: Funtori e Applicativi)

Le classi Functor e Applicative.
Assiomatizzazione delle leggi che fmap e <*> devono soddisfare.
Applicazioni a programmazione generica.

Giovedì 25 marzo 2021 - Lezione 8 (Equivalenze Algebriche e Trasformazioni di Programmi)

Equivalenze algebriche tra programmi: dimostrazioni di correttezza e trasformazioni di programmi.
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.

Lunedì 29 marzo 2021 - Lezione 9 (Prime Perle: Sottosequenza di Somma Massima e Minimo Intero Libero)

Applicazione delle trasformazioni di programmi a famosi problemi di programmazione.
Perla 1: il problema del minimo intero libero.
Perla 2: il problema della sottosequenza di somma massima.

Giovedì 8 aprile 2021 - Lezione 10 (The Importance of Being Lazy)

Valutazione call-by-name nella pratica di programmazione: efficienze e inefficienze.
Definizione di strutture dati infinite grazie alla laziness.

Lunedì 12 aprile 2021 - Lezione 11 (Perle di Laziness I: Ulam e Hamming Numbers)

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.
  • Trial division
  • Crivello di Eratostene di Turner (vero o presunto) e crivello di Bird.
  • Crivello di Eulero.

Lunedì 19 aprile 2021 - Lezione 13 (Effectful Programming in Haskell: Monadi)

Eccezioni e altri aspetti non funzionali.
Utilizzo delle monadi per trattare:
  • eccezioni;
  • stato mutabile;
  • input/output.

Giovedì 22 aprile 2021 - Lezione 14 (More on Monads and More)

Monadi e leggi categoriali.
Altre astrazioni di ispirazione categoriale: monoidi, Foldable e Traversable.

Lunedì 26 aprile 2021 - Lezione 15 (Cambiare il Mondo: Input/Output in Haskell)

Il problema dell'Input/Output in Haskell.
do-notation.

Giovedì 29 aprile 2021 - Lezione 16 (Goodbye Haskell: Ultima Perla. Unbeatable Tic-Tac-Toe)

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)

-- Ivano Salvo - 2021-02-25

Edit | Attach | Watch | Print version | History: r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r3 - 2021-06-14 - 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-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback