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