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
- 2016/2017
- 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
- basi della teoria della computabilità
- 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
- valutazione della complessità di un problema
- 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
- Introduzione alla programmazione orientata agli oggetti (OOP) (12 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) (14 ore): JCF, generici, JCF con generici.
Grafica in Java (8 ore): JavaFX, modello ad eventi.
Linguaggi formali (16 ore): macchine astratte, interpreti, compilatori, descrivere un linguaggio di programmazione, analisi lessicale, analisi sintattica, fondamenti di calcolabilità, fondamenti di complessità, generatori di analizzatori lessicali e sintattici (lex e yacc).
Programmazione logica (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 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 un 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. Testi di riferimento
- 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.