Presentazione

Organizzazione della Didattica

DM270
INFORMATICA ORD. 2014

Functional languages

6

Corsi comuni

 

Frontali Esercizi Laboratorio Studio Individuale
ORE: 40 0 10 102

Periodo

AnnoPeriodo
I anno1 semestre

Frequenza

Facoltativa

Erogazione

Convenzionale

Lingua

Inglese

Calendario Attività Didattiche

InizioFine
01/10/201818/01/2019

Tipologia

TipologiaAmbitoSSDCFU
caratterizzanteDiscipline informaticheINF/016


Responsabile Insegnamento

ResponsabileSSDStruttura
Prof. FILE' GILBERTOINF/01Dipartimento di Matematica

Altri Docenti

Non previsti

Attività di Supporto alla Didattica

Non previste

Bollettino

Programmazione imperativa ed orientata agli oggetti

Apprezzare il paradigma funzionale di programmazione. In particolare viene studiato il linguaggio Haskell. Gli studenti imparano ad apprezzare l'importanza dei tipi come fondamentale mezzo per scoprire gli errori e imparano concetti quali il polimorfismo parametrico e la valutazione lazy. Viene introdotto anche il concetto di Monade e il suo uso per la programmazione generica e modulare. Imparano anche a capire la gestione run time dei programmi.

Il corso prevede 50 ore totali. Di queste, circa 35 sono di lezioni frontali. Le restanti ore sono impiegate per la soluzione interattiva di esercizi e per la presentazione e discussione del progetto.

Nel corso viene illustrato il linguaggio funzionale Haskell. In particolare si studiano i seguenti aspetti: Pattern matching. Curryficazione e funzioni di ordine superiore. Inferenza di tipo: cos'è e come viene fatta. Input e output. Polimorfismo parametrico. Valutazione pigra. Funtori, funtori applicativi e monadi. Supporto run-time. Parsing con le Monadi.

L'esame consiste di una parte scritta (80% del voto finale) e di una orale (20% del voto finale). L'esame scritto verte sulle nozioni generali e gli esercizi visti nel corso, mentre la parte orale è una discussione sul progetto che consiste nella realizzazione di un parser per un linguaggio funzionale.

L'esame mira a valutare il grado di comprensione dei concetti insegnati, raggiunto dagli studenti, e la capacità di usare questi concetti per affrontare problemi relativi ai linguaggi funzionali e al loro uso per definire programmi modulari e generici.

Miran Lipovaca, Learning you a Haskell for great good. : , Graham Hutton, Programming in Haskell. : Cambridge University Press,

Programming in Haskell by Graham Hutton Cambridge University Press, 2nd edition