LINGUAGGI DI PROGRAMMAZIONE E LABORATORIO

Anno accademico e docente
Non hai trovato la Scheda dell'insegnamento riferita a un anno accademico precedente? Ecco come fare >>
English course description
Anno accademico
2020/2021
Docente
FABRIZIO RIGUZZI
Crediti formativi
9
Periodo didattico
Primo Semestre
SSD
INF/01

Obiettivi formativi

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 logica e dell’implementazione dei linguaggi.
Le principali conoscenze acquisite saranno:
- principi di base della programmazione orientata agli oggetti
- tecniche di programmazione ad oggetti
- il linguaggio di programmazione Java
- basi delle potenzialità grafiche del linguaggio Java
- cenni di programmazione logica
- il linguaggio di programmazione Python
- implementazione dei linguaggi di programmazione
Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) saranno:
- analisi e soluzione di problemi di crescente complessità mediante codice ad oggetti in Java e Python
- implementazione di semplici algoritmi in programmazione logica

Prerequisiti

Il corso "Programmazione e Laboratorio" è propedeutico.
E’ necessario avere acquisito e assimilato le seguenti conoscenze fornite dal corso "Programmazione e Laboratorio":
- principi della programmazione strutturata
- linguaggio C
- semplici strutture di dati
- algoritmi di base

Contenuti del corso

Il corso prevede 72 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 Eclipse.
OOP in Java (16 ore): Ereditarietà, subtyping, polimorfismo, la classe Object, classi astratte e interfacce, eccezioni, input/output.
Java Collection Framework (JCF) (4 ore): JCF, generici, JCF con generici.
Grafica in Java (8 ore): JavaFX, modello ad eventi.
Programmazione logica (10 ore).
OOP in Python (18 ore): sintassi, tipi, funzioni, dizionari, moduli, classi, ereditarietà, eccezioni.
Implementazione dei linguaggi (6 ore)

Metodi didattici

Il corso prevede 72 ore di lezione.
Le lezioni riguardano gli argomenti del corso e includono anche semplici prove al calcolatore da parte degli studenti degli esempi illustrati dal docente.

Modalità di verifica dell'apprendimento

L'obiettivo della prova d'esame consiste nel verificare il livello di raggiungimento degli obiettivi formativi precedentemente indicati.
L'esame consiste di due prove. La prima consiste nella scrittura di due programmi, uno in Java e uno in Python, che leggano dati da file di testo e li elaborino. I programmi devono essere scritti al calcolatore. Inoltre la prova include un esercizio di programmazione logica.
La seconda prova consiste di una domanda sull’implementazione dei linguaggi.
La prima prova dura tre ore e mezza. Vale 29 punti. La seconda prova dura 10 minuti e vale 3 punti. E' consentito usare materiale didattico eccetto che per la domanda sull’implementazione dei linguaggi. Il codice dei programmi deve poter essere compilato senza errori, altrimenti il compito non verrà corretto.
L’esame può essere sostenuto anche mediante due prove parziali, la prima, su Java, durante la sospensione delle lezioni, la seconda su Python, programmazione logica e implementazione dei linguaggi, alla fine del corso.

Testi di riferimento

I testi di riferimento sono
- dispense del docente
- Walter Savitch, Programmazione di base e avanzata con JAVA 2/Ed, Pearson, 2018
- Allen B. Downey, Think Python 2nd Edition, O’Reilly, 2015, https://greenteapress.com/wp/think-python-2e/
- M. Gabbrielli, S. Martini, Linguaggi di programmazione. Principi e paradigmi 2a edizione McGraw-Hill, 2011
Per approfondimenti consultare
Bruce Eckel, Thinking in Java 4th edition, Prentice Hall, 2006, https://archive.org/details/TIJ4CcR1/page/n3
Cay S. di Horstmann, Concetti di informatica e fondamenti di Java - 6a ed., Apogeo, 2016
H. M. Deitel, P. J. Deitel. Java Fondamenti di Programmazione, 3a ed., Apogeo, Milano.
J. Lewis, W. Loftus, Java - Fondamenti di progettazione software, Addison Wesley, Italia.