LINGUAGGI DI PROGRAMMAZIONE E LABORATORIO

Anno accademico e docente
Non hai trovato la Scheda dell'insegnamento riferita all’anno accademico di tuo interesse? Ecco come fare >>
English course description
Anno accademico
2017/2018
Docente
FABRIZIO RIGUZZI
Crediti formativi
9
Periodo didattico
Secondo 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 teoria dei linguaggi formali, della teoria della computabilità e della programmazione logica.
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
- basi della teoria dei linguaggi formali e delle macchine astratte
- tecniche per la progettazione e l'analisi di un linguaggio di programmazione
- implementazione di un linguaggio di programmazione
- cenni di programmazione logica
Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) saranno:
- analisi e soluzione di problemi di crescente complessità mediante codice ad oggetti
- generazione automatica di compilatori tramite strumenti automatici (lex e yacc)
- 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ù 24 ore di supporto alla didattica mediante esercitazioni guidate in laboratorio.
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.
Linguaggi formali (24 ore): macchine astratte, interpreti, compilatori, descrivere un linguaggio di programmazione, analisi lessicale, analisi sintattica, generatori di analizzatori lessicali e sintattici (lex e yacc), implementazione dei linguaggi
Programmazione logica (10 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 una prova pratica e una prova teorica.
La prova pratica si svolge nel laboratorio di informatica e consiste di un esercizio su Java: gli studenti devono scrivere un programma che legga dati da file di testo e li elabori. Il programma deve essere scritto usando i calcolatori del laboratorio. La prova dura due ore. Vale fino a 17 punti. Non è consentito utilizzare PC personali o smart phone. E' consentito usare materiale didattico. Il codice del programma deve poter essere compilato senza errori, altrimenti il compito non verrà corretto.
La prova teorica consiste di tre domande a risposta aperta sugli argomenti teorici. La prova dura 30 minuti. Vale fino a 15 punti. Non è consentito utilizzare PC personali, smart phone o materiale didattico.
Il voto finale è dato dalla somma dei voti nelle due prove. L'esame è superato se in ciascun prova il voto è almeno 9. Si possono sostenere le due prove in appelli diversi e in sessioni diverse.

Testi di riferimento

I testi di riferimento sono
- dispense del docente
- Bruce Eckel, Thinking in Java 4th edition, Prentice Hall, Thinking in Java, 3rd Edition, ebook gratuito, http://www.mindviewinc.com/downloads/TIJ-3rd-edition4.0.zip
- Maurizio Gabbrielli, Simone Martini, "Linguaggi di Programmazione. Principi e paradigmi", Seconda Edizione, McGraw-Hill, 2011
Per approfondimenti consultare
Cay S. di Horstmann, Concetti di informatica e fondamenti di Java - 4a ed., Apogeo, Milano
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.