PROGRAMMAZIONE FUNZIONALE

A.A. di erogazione 2020/2021
Insegnamento opzionale

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

Docenti

Anno di corso: 
3
Tipologia di insegnamento: 
Affine/Integrativa
Settore disciplinare: 
LOGICA MATEMATICA (MAT/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 dei 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.

Al termine del corso lo studente sarà in grado di:
• dimostrare la comprensione dei principi di base dei linguaggi di programmazione funzionali e del loro modello computazionale;
• dimostrare la conoscenza delle principali tecniche di programmazione e delle strutture dati utilizzate nel contesto della programmazione funzionale;
• formulare e risolvere problemi utilizzando le astrazioni più adatta per la loro formalizzazione nel contesto della programmazione funzionale;
• riconoscere e utilizzare la terminologia utilizzata nell’ambito dei linguaggi di programmazione funzionale e delle loro applicazioni.

Lo studente svilupperà inoltre le capacità necessarie a comunicare in modo compiuto e con la corretta terminologia le caratteristiche di un linguaggio di programmazione funzionale e la struttura delle applicazioni

Per un proficuo apprendimento di questo insegnamento lo studente deve padroneggiare la programmazione in linguaggio Java oggetto dell’insegnamento fondamentale di Programmazione del primo anno, che dunque costituisce propedeuticità obbligatoria. Inoltre, alcuni degli argomenti del corso richiedono la conoscenza delle principali nozioni matematiche e tecniche dimostrative, delle strutture dati di base e dei relativi algoritmi; per questa ragione è consigliabile che lo studente abbia frequentato e sostenuto gli insegnamenti fondamentali di Algebra e Geometria e Algoritmi e Strutture Dati del primo anno di corso

L'acquisizione delle diverse conoscenze ed abilità attese si svilupperà in modo parallelo lungo tutto l'insegnamento, in cui verranno trattati i seguenti argomenti:
• Caratteristiche dei linguaggi di programmazione imperativi, ad oggetti e funzionali. (4h)
• Elementi di base dei linguaggi di programmazione funzionale: ricorsione e tail-recursion. (6h)
• Modello di sostituzione valutazione, strategie di valutazione (call-by-name e call-by-value). (4h)
• Funzioni all'ordine superiore e currying. (6h)
• Programmazione funzionale e oggetti. Gerarchia dei tipi, tipi parametro, polimorfismo e vincoli. Implementazione in Scala. (6h)
• Il problema della decomposizione e pattern matching. (4h)
• Strutture dati mutable e immutable: List, Vector, Trees, Maps. (8h)
• Funzioni map, reduce e filter. (6h)
• Correttezza. (4h)

Il corso si articola in lezioni frontali (48 ore). Nelle lezioni frontali la presentazione dei vari argomenti è costantemente alternata alla loro applicazione attraverso la presentazione di esempi e lo sviluppo di esercizi che prevedono la partecipazione attiva degli studenti. Gli esercizi presentati costituiscono una fondamentale linea guida per la preparazione dell’esame.

L’esame consiste in una prova scritta volta 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).

Il voto finale è espresso in trentesimi.

Martin Odersky, Lex Spoon, Bill Venners. Programming in Scala. Fourth edition. 2019

Le slide delle lezioni in formato PDF sono messe a disposizione sulla piattaforma e-learning di Ateneo ove sono disponibili anche il testo dei problemi visti durante le esercitazioni e le soluzioni proposte.

Il docente riceve su appuntamento, previa richiesta via e-mail a nome.cognome@uninsubria.it. Il docente risponde solo alle e-mail firmate e provenienti dal dominio studenti.uninsubria.it.

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. 2020/2021

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

A.A. 2019/2020

Anno di corso: 3
Curriculum: PERCORSO COMUNE