Università degli studi dell'Insubria

PROGRAMMAZIONE FUNZIONALE

A.A. di erogazione 2018/2019
Insegnamento opzionale

Laurea triennale in INFORMATICA
 (A.A. 2017/2018)

Docenti

L'insegnamento è condiviso, tecnicamente "mutuato" con altri corsi di laurea, consultare il dettaglio nella sezione Mutuazioni
Anno di corso: 
2
Tipologia di insegnamento: 
Affine/Integrativa
Settore disciplinare: 
INFORMATICA (INF/01)
Crediti: 
6
Ciclo: 
Secondo Semestre
Ore di attivita' frontale: 
48
Dettaglio ore: 
Lezione (48 ore)

Questo corso fornisce un’introduzione alla programmazione funzionale e
alle relative tecniche di programmazione.

L'obiettivo primario è quello di fornire agli studenti le conoscenze
necessarie alla comprensione e all’utilizzo del linguaggi funzionali
utilizzando il linguaggio Scala come caso di studio.

Il corso affianca quindi all'insegnamento teorico dei linguaggi
funzionali e delle tecniche di programmazione funzionali esercitazioni
basate sull'utilizzo del linguaggio Scala.

Conoscenza e capacità di comprensione
Al termine del corso lo studente possiede le conoscenze necessarie per
affrontare individualmente lo studio di un linguaggio di
programmazione funzionale e per comprendere le problematiche relative allo
sviluppo e all’applicazione dei linguaggi di programmazione funzionali.

Capacità di applicare conoscenza e comprensione.
Al termine del corso lo studente è in grado di applicare il linguaggio
di programmazione alla risoluzione di semplici problemi individuando
le astrazioni più adatte alla formalizzazione del problema in un
linguaggio funzionale.

Autonomia di giudizio
Al termine del corso lo studente è in grado di individuare lo schema
concettuale di risoluzione di un problema e di utilizzare il
linguaggio di programmazione per l’organizzazione della sua soluzione.

Abilità comunicative
Al termine del corso lo studente è in grado di comunicare in modo
compiuto e con la corretta terminologia le caratteristiche di un
linguaggio di programmazione funzionale e la struttura delle applicazioni
realizzate.

Prerequisiti: 

Il corso ha come prerequisto l'insegnamento di Programmazione. In
particolare lo studente deve avere una buona conoscenza dei meccanismi
di base dei linguaggi di programmazione imperativi e ad oggetti.

È inoltre utile una buona conoscenza della matematica discreta e delle
strutture dati di base che sono impartite negli insegnamenti di
Algebra e geometria e Algoritmi e strutture dati.

L'acquisizione delle diverse conoscenze ed abilità attese si
svilupperà in modo parallelo lungo tutto l'insegnamento, in cui
verranno trattati i seguenti argomenti:

Caratteristche dei linguaggi di programmazione imperativi ad oggetti e
funzionali. (4h)

Elementi di base dei lingiuaggi di programmazione funzionale:
ricorsione e tail-recursion, modello si sostituzione valutazione,
strategie di valutazione (call-by-name e call-by-value). (6h)

Funzioni all'ordine superiore e currying. (6h)

Programmazione funzionale e oggetti. Gerarchia dei tipi, tipi
parametro, polimorfismo e vincoli. Implementzione in Scala. (8h)

Il problema della decomposizione e pattern matchsing. (6h)

Strutture dati mutable e immutable: List, Vector, Trees, Maps. (8h)

Funzioni map, reduce e filter. (6h)

Correttezza. (4h)

48 ore di lezioni frontali, 102 ore di studio individuale.

Modalita' di verifica dell'apprendimento: 

L’esame consiste in una prova scritta tesa all'accertamento della
conoscenza e della comprensione degli aspetti teorici dei linguaggi
funzionali (3 domande, 15 punti) e
della capacità dello studente di applicare la programmazione
funzionale alla risoluzione di piccoli problemi (3 esercizi, 15
punti).

Martin Odersky, Lex Spoon, Bill Venners. Programming in Scala. Third edition. 2016

Dispense su e-lerning.

Ricevimento studenti: su appuntamento tramite richiesta via e-mail.

Cerchi il programma? Potrebbe non essere ancora stato caricato o riferirsi ad insegnamenti che verranno erogati in futuro.
Seleziona l‘anno in cui ti sei immatricolato e troverai le informazioni relative all'insegnamento del tuo piano di studio.

A.A. 2016/2017

Anno di corso: 2
Curriculum: PERCORSO COMUNE
Anno di corso: 3
Curriculum: PERCORSO COMUNE