<center> ---+++ <font color=#B22222 size="+3"> Materiali Didattici<br><br> </center></font> <font color=#007700 size="+1"> *Testi* </font> * *Testi Consigliati* * R. Bird: _Thinking Functionally with Haskell_. Cambridge University Press (2015). * G. Hutton: _Programming in Haskell_ (2nd edition). Cambridge University Press (2016). * B. W. Kernigham, D. Ritchie: _The C Programming Language_ (2nd edition), Pearson (1988). * *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. * *Risorse Web* * [[https://wiki.haskell.org/Haskell][Haskell wiki]] <br> <font color=#007700 size="+1"> <b>Slides (2025)</b></font> <br> Anche se il programma ricalcherà quello del 2024, le slides verranno aggiornate durante il corso.<br> Le versioni aggiornate sono disponibili nel classroom del corso. <br> <font color=#007700 size="+1"> <b>Slides (2024)</b></font> <br> Anche se il programma ricalcherà quello del 2023, le slides verranno aggiornate durante il corso. <br> <font color=#007700 size="+1"> <b>Slides (2023)</b></font> <br> Anche se il programma ricalcherà quello del 2022, le slides verranno aggiornate durante il corso. <br> <font color=#007700 size="+1"> <b>Slides (2022)</b></font> * *Parte I: Fondamenti della Programmazione Funzionale* * [22/2/22] Lezione *01*: [[%ATTACHURL%/01-babele.pdf][La Babele dei Linguaggi di Programmazione]] e un assaggio di programmazione funzionale in Haskell. * [25/2/22] Lezione *02*: [[%ATTACHURL%/02-lambda.pdf][In Principio era il Lambda-Calcolo]] e lambda calcolo (tipato) in Haskell. * [01/3/22] Lezione *03*: [[%ATTACHURL%/03-straniTipi.pdf][Quegli Strani Tipi (Polimorfi)]] e programmazione su liste in Haskell. * [04/3/22] Lezione *04*: [[%ATTACHURL%/04-ordineSuperiore.pdf][Verso un Ordine Superiore]]: definizioni di funzion(al)i in Haskell. * [08/3/22] Lezione *05*: [[%ATTACHURL%/05-classi.pdf][Tipi strani... ma di Classe]]: definizioni di tipi, classi e istanze in Haskell. * *Parte II: Temi Avanzati di Programmazione Funzionale* * [15/3/22] Lezione *07*: [[%ATTACHURL%/07-proofs.pdf][L'Onere e l'Onore della Prova]]: prove algebriche di correttezza. * [18/3/22] Lezione *08*: [[%ATTACHURL%/08-insideLaziness.pdf][L'importanza di essere Lazy]]: inside lazy evaluation e prime tecniche di ottimizzazione. * [22/3/22] Lezione *09*: [[%ATTACHURL%/09-funzionaliEfficienti.pdf][Funzionali sì, ma Efficienti]]: problematiche di efficienza tempo/spazio dei programmi funzionali. * [29/3/22] Lezione *11*: [[%ATTACHURL%/11-infiniteLists.pdf][L'Infinita Importanza di essere Lazy]]: programmazione su liste infinite. * [01/4/22] Lezione *12*: [[%ATTACHURL%/12-coricorsione.pdf][Induzione, ricorsione & coinduzione e coricorsione]]: principi di dimostrazione per oggetti infiniti (da rivedere). * [12/4/22] Lezione *15*: [[%ATTACHURL%/15-funtoriApplicativi.pdf][Funtori & Applicativi]]: astrazioni categoriali. * [22/4/22] Lezione *16*: [[%ATTACHURL%/16-shallIBePure.pdf][Shall I be pure or impure?]]: Monadi e applicazioni. * [22/4/22] Lezione *17*: [[%ATTACHURL%/17-monadiMore.pdf][I/O e array mutabili]]: I/O ed altri aspetti non funzionali. * [29/4/22] Lezione *18*: [[%ATTACHURL%/18-MonadVariations.pdf][Altre Astrazioni]]: Variazioni sulle Monadi, Monoidi, Foldable e Traversable. * *Parte III: Programmazione Imperativa in C* * [03/5/22] Lezione *19*: [[%ATTACHURL%/19-tinyC.pdf][ABC... del C]]: programmazione imperativa in C e asserzioni logiche. * [06/5/22] Lezione *20*: [[%ATTACHURL%/20-puntatori.pdf][Parli del Diavolo e spuntano... i puntatori!]]: uso di puntatori espliciti e aritmetica dei puntatori. * [10/5/22] Lezione *21*: [[%ATTACHURL%/21-vettori.pdf][Vettori]]: Vettori e matrici nel C classico. * [13/5/22] Lezione *22*: [[%ATTACHURL%/22-vettoriDinamici.pdf][Memoria Dinamica]]: vettori variabili e dinamici in C. Allocazione esplicita di memoria. * [17/5/22] Lezione *23*: [[%ATTACHURL%/23-listeC.pdf][Liste]]: Liste in C: versioni mutabili e immutabili. * [24/5/22] Lezione *24*: [[%ATTACHURL%/24-listeC-II.pdf][Liste II]]: Strutture Dati Generiche e quello che in Haskell non si può fare. * *Parte IV: Perle di Programmazione Funzionale e Imperativa* * [11/3/22] Lezione *06*: [[%ATTACHURL%/06-piccoleApplicazioni.pdf][Ideologia Funzionale in Azione!]]: common Words e problemi combinatori. * [25/3/22] Lezione *10*: [[%ATTACHURL%/10-perleDerivazione.pdf][Perle di derivazione (di programmi)]]: minimo intero libero e segmento di somma massima. * [05/4/22] Lezione *13*: [[%ATTACHURL%/12-perleDiLaziness1.pdf][Perle di laziness]]: generazione di due famose sequenze: numeri di Hamming e numeri di Ulam. * [08/4/22] Lezione *14*: [[%ATTACHURL%/14-primiPrimoAmore-prj.pdf][Primo amore: numeri primi]]: generare la Sequenza più intrigante. * [27/5/22] Lezione *25*: [[%ATTACHURL%/25-generichePerle.pdf][Una Lezione dal Maestro EWD]]: Perla di derivazione di programmi imperativi usando asserzioni logiche. <br> <font color=#007700 size="+1"> <b>Slides (2021)</b></font> * *Parte I: Programmazione Funzionale* * [[%ATTACHURL%/tpfi-01.pdf][Lez. 1 - La Babele dei Linguaggi di Programmazione]]: Introduzione al Corso e ai Linguaggi Funzionali nel contesto dell'evoluzione dei Linguaggi di Programmazione * [[%ATTACHURL%/tpfi-02.pdf][Lez. 2 - In Principio era il Lambda-Calcolo]]: Introduzione al Lambda calcolo ed Haskell * [[%ATTACHURL%/tpfi-03.pdf][Lez. 3 - Quegli Srani Tipi (Polimorfi)]]: Tipi base, Costruttori di Tipo, definizioni di funzioni * [[%ATTACHURL%/tpfi-04.pdf][Lez. 4 - Verso un Ordine Superiore. Funzioni e Funzionali]]: Programmazione su liste, pattern matching, funzionali di ordine superiore * [[%ATTACHURL%/tpfi-05.pdf][Lez. 5 - Una Questione di Classe]]: Definizioni di tipo e tipi induttivi. Classi e Istanze. * [[%ATTACHURL%/tpfi-06.pdf][Lez. 6 - Alla Ricerca del Tipo Principale]]: Sistema di assegnamento dei tipi e algoritmo di inferenza dei tipi di Hindley-Milner. * [[%ATTACHURL%/tpfi-07.pdf][Lez. 7 - Astrazioni Categoriali. Funtori e Applicativi]]: Funtori e Applicativi. * [[%ATTACHURL%/tpfi-08.pdf][Lez. 8 - Proofs 1]]: Trasformazioni di Programmi e prove algebriche di equivalenze. * [[%ATTACHURL%/tpfi-09.pdf][Lez. 9 - Prime Perle]]: Prime perle: sottovettore di somma massima e minimo intero libero. * [[%ATTACHURL%/tpfi-10.pdf][Lez.10 - L'Importanza di Essere Lazy]]: Inside Lazy Evaluation. * [[%ATTACHURL%/tpfi-11.pdf][Lez.11 - Perle di Laziness I]]: numeri di Ulam e numeri di Hamming. * [[%ATTACHURL%/tpfi-12.pdf][Lez.12 - Perle di Laziness II]]: numeri primi, primo amore. * [[%ATTACHURL%/tpfi-13.pdf][Lez.13 - Effectful Programming in Haskell: Monadi]]. * [[%ATTACHURL%/tpfi-14.pdf][Lez.14 - More on Monads and more]]. * [[%ATTACHURL%/tpfi-15.pdf][Lez.15 - Altre Astrazioni Categoriali]]: Monoidi e Traversable. Input output. * [[%ATTACHURL%/tpfi-16.pdf][Lez.16 - Goodbye Haskell (Ultima Perla)]]: Unbeatable Tic-Tac-Toe. * *Parte II: Programmazione Imperativa* * [[%ATTACHURL%/tpfi-17.pdf][Lezione 17]]: Specifiche, precondizioni, postcondizioni e invarianti. * [[%ATTACHURL%/tpfi-18.pdf][Lezione 18]]: Puntatori in C e passaggio di parametri. * [[%ATTACHURL%/tpfi-19.pdf][Lezione 19]]: Vettori in C e aritmetica dei puntatori. * [[%ATTACHURL%/tpfi-20.pdf][Lezione 20]]: Vettori e Matrici in C. Allocazione di memoria dinamica. * [[%ATTACHURL%/tpfi-21.pdf][Lezione 21]]: Liste I. Strutture dati mutabili e immutabili. * [[%ATTACHURL%/tpfi-22.pdf][Lezione 22]]: Liste II. Gestione della memoria: fastidio e opportunità. * [[%ATTACHURL%/tpfi-23.pdf][Lezione 23]]: Alcune perle di stile e di programmazione. * [[%ATTACHURL%/tpfi-24.pdf][Lezione 24]]: Alberi binari e Strutture Dati Generiche in C. - %USERSIG{IvanoSalvo - 2021-03-12}%
This topic: TPFI
>
WebHome
>
MaterialiDidattici
Topic revision: r32 - 2025-02-22 - 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