ID:
SCV0627
Durata (ore):
48
CFU:
6
SSD:
LOGICA MATEMATICA
Anno:
2024
Dati Generali
Periodo di attività
Secondo Semestre (17/02/2025 - 30/05/2025)
Syllabus
Obiettivi Formativi
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:
(1) dimostrare la comprensione dei principi di base dei linguaggi di programmazione funzionali e del loro modello computazionale;
(2) dimostrare la conoscenza delle principali tecniche di programmazione e delle strutture dati utilizzate nel contesto della programmazione funzionale;
(3) formulare e risolvere problemi utilizzando le astrazioni più adatta per la loro formalizzazione nel contesto della programmazione funzionale;
(4) 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
Al termine del corso lo studente sarà in grado di:
(1) dimostrare la comprensione dei principi di base dei linguaggi di programmazione funzionali e del loro modello computazionale;
(2) dimostrare la conoscenza delle principali tecniche di programmazione e delle strutture dati utilizzate nel contesto della programmazione funzionale;
(3) formulare e risolvere problemi utilizzando le astrazioni più adatta per la loro formalizzazione nel contesto della programmazione funzionale;
(4) 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
Prerequisiti
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
Metodi didattici
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.
Verifica Apprendimento
L’esame consiste in una prova scritta. La prova scritta ha o scopo di verificare la conoscenza e la comprensione degli aspetti teorici dei linguaggi funzionali (parte A, 3 domande) e la capacità dello studente di applicare la programmazione funzionale alla risoluzione di piccoli problemi (parte B, 3 esercizi).
Il voto finale sarà determinato per il 50% dalla valutazione della parte A, per il 50% dalla valutazione della parte B.
Il voto finale è espresso in trentesimi.
Il voto finale sarà determinato per il 50% dalla valutazione della parte A, per il 50% dalla valutazione della parte B.
Il voto finale è espresso in trentesimi.
Contenuti
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, obiettivo 1)
• Elementi di base dei linguaggi di programmazione funzionale: ricorsione e tail-recursion. (6h, obiettivo 2)
• Modello di sostituzione valutazione, strategie di valutazione (call-by-name e call-by-value). (4h, obiettivi 1, 3, 4)
• Funzioni all'ordine superiore e currying. (6h, obiettivi 1 e 4)
• Programmazione funzionale e oggetti. Gerarchia dei tipi, tipi parametro, polimorfismo e vincoli. Implementazione in Scala. (6h, obiettivi 2, 4)
• Il problema della decomposizione e pattern matching. (4h, obiettivi 2, 3 e 4)
• Strutture dati mutable e immutable: List, Vector, Trees, Maps. (8h, obiettivo 2)
• Funzioni map, reduce e filter. (6h, obiettivi 2 e 3)
• Correttezza. (4h, obiettivo 1)
• Caratteristiche dei linguaggi di programmazione imperativi, ad oggetti e funzionali. (4h, obiettivo 1)
• Elementi di base dei linguaggi di programmazione funzionale: ricorsione e tail-recursion. (6h, obiettivo 2)
• Modello di sostituzione valutazione, strategie di valutazione (call-by-name e call-by-value). (4h, obiettivi 1, 3, 4)
• Funzioni all'ordine superiore e currying. (6h, obiettivi 1 e 4)
• Programmazione funzionale e oggetti. Gerarchia dei tipi, tipi parametro, polimorfismo e vincoli. Implementazione in Scala. (6h, obiettivi 2, 4)
• Il problema della decomposizione e pattern matching. (4h, obiettivi 2, 3 e 4)
• Strutture dati mutable e immutable: List, Vector, Trees, Maps. (8h, obiettivo 2)
• Funzioni map, reduce e filter. (6h, obiettivi 2 e 3)
• Correttezza. (4h, obiettivo 1)
Lingua Insegnamento
ITALIANO
Altre informazioni
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.
Corsi
Corsi
INFORMATICA
Laurea
3 anni
No Results Found
Persone
Persone
Docenti di ruolo di Ia fascia
No Results Found