L'obiettivo principale del corso consiste nel rendere gli studenti in grado di programmare in linguaggi orientati agli oggetti. Inoltre, il corso illustrerà i principi di base della programmazione funzionale. Le principali conoscenze acquisite saranno: - principi di base della programmazione orientata agli oggetti - tecniche di programmazione ad oggetti - il linguaggio di programmazione Java - cenni di programmazione funzionale Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) saranno: - analisi e soluzione di problemi mediante codice ad oggetti in Java - implementazione di semplici algoritmi in programmazione funzionale
Prerequisiti
E’ necessario avere acquisito e assimilato le seguenti conoscenze: - principi della programmazione strutturata - linguaggio C - semplici strutture di dati - algoritmi di base
Metodi didattici
Il corso prevede 48 ore di lezione. Le lezioni riguardano gli argomenti del corso e includono anche semplici prove al calcolatore da parte degli studenti..
Verifica Apprendimento
L'esame consiste in una prova in cui gli studenti dovranno scrivere un programma in Java che legga dati da file di testo e li elabori. Il programma deve essere scritto al calcolatore. Inoltre la prova include la scrittura di un breve programma in Haskell. La prova dura 2 ore. Vale 32 punti. E' consentito usare materiale didattico. Il codice del programma deve poter essere compilato senza errori, altrimenti il compito non verrà corretto.
Testi
I testi di riferimento sono - dispense del docente - Walter Savitch, Programmazione di base e avanzata con Java - 3/Ed, Pearson, 2024 - Graham Hutton, Programming in Haskell, Cambridge University Press, 2nd edition, 2016
Contenuti
Il corso prevede 48 ore di didattica frontale più tutorato. Introduzione alla programmazione orientata agli oggetti (OOP) (10 ore): OOP classica, OOP in Java, oggetti composti, package, stringhe, array, wrapper, IDE. OOP in Java (14 ore): Ereditarietà, subtyping, polimorfismo, la classe Object, classi astratte e interfacce, eccezioni, input/output. Java Collection Framework (JCF) (12 ore): JCF, generici, JCF con generici. Programmazione funzionale (6 ore): calcolo come riduzione di espressioni, strategie di valutazione, tipi, funzioni di ordine superiore, il linguaggio Haskell. Grafica in Java (6 ore): JavaFX, modello ad eventi.