ID:
SCV0627
Durata (ore):
48
CFU:
6
SSD:
LOGICA MATEMATICA
Anno:
2026
Dati Generali
Periodo di attività
Secondo Semestre (22/02/2027 - 28/05/2027)
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 unicamente in una prova scritta. La prova scritta, della durata di 110 minuti, ha l’obiettivo di accertare l’acquisizione delle conoscenze e delle abilità descritte nella sezione “Obiettivi del corso”, verificando in particolare la conoscenza e la comprensione degli aspetti teorici dei linguaggi funzionali e la capacità di applicare la programmazione funzionale alla risoluzione di piccoli problemi.
La prova è articolata secondo il seguente schema:
parte A: tre domande relative agli aspetti teorici dei linguaggi funzionali;
parte B: tre esercizi volti a verificare la capacità di applicare la programmazione funzionale alla risoluzione di problemi.
Ciascuna domanda della parte A e ciascun esercizio della parte B sono valutati fino a un massimo di 5 punti. Il punteggio complessivo massimo della prova è pari a 30 punti.
Il voto finale è espresso in trentesimi. La lode può essere attribuita agli studenti che conseguano il punteggio massimo nella prova e che dimostrino piena padronanza degli argomenti teorici, correttezza completa nello svolgimento degli esercizi, chiarezza espositiva e capacità di applicare in modo autonomo e consapevole le tecniche di programmazione funzionale apprese durante il corso.
La prova è articolata secondo il seguente schema:
parte A: tre domande relative agli aspetti teorici dei linguaggi funzionali;
parte B: tre esercizi volti a verificare la capacità di applicare la programmazione funzionale alla risoluzione di problemi.
Ciascuna domanda della parte A e ciascun esercizio della parte B sono valutati fino a un massimo di 5 punti. Il punteggio complessivo massimo della prova è pari a 30 punti.
Il voto finale è espresso in trentesimi. La lode può essere attribuita agli studenti che conseguano il punteggio massimo nella prova e che dimostrino piena padronanza degli argomenti teorici, correttezza completa nello svolgimento degli esercizi, chiarezza espositiva e capacità di applicare in modo autonomo e consapevole le tecniche di programmazione funzionale apprese durante il corso.
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