Conoscenza e comprensione dei concetti della programmazione ad Oggetti con approfondimenti sulla Programmazione in Linguaggio Java. Il corso è orientato a fornire solide basi in merito alla programmazione dei calcolatori elettronici per risoluzione di problemi con il linguaggio Java. Acquisizione di competenze specifiche sui principi della programmazione dei calcolatori, dei linguaggi imperativi e basati sulla logica, dei principi della programmazione object-oriented (OOP) e delle conoscenze di base del compilatore, interprete e macchina virtuale Java. Sviluppo delle capacità di utilizzo degli strumenti linguistici di base del linguaggio Java (istruzioni e tipi). Acquisizione dell’abilità di progettare la risoluzione di problemi mediante un approccio algoritmico OO e di verificare la correttezza di un programma Java per la risoluzione di un problema dato. Acquisizione di abilità nella risoluzione di problemi, in particolare attraverso lo sviluppo di algoritmi e nella collaborazione in piccoli gruppi. Acquisizione di autonomia nella ricerca di librerie utili alla risoluzione di homework, anche su siti internazionali (e quindi solitamente in lingua inglese).
Prerequisiti
Conoscenza dei concetti base della programmazione, la programmazione strutturata ed i costrutti e le strutture dati principali.
Metodi didattici
Il corso, al fine di raggiungere gli obiettivi formativi previsti, si svolge prevalentemente attraverso lezioni frontali. Sono inoltre previste esercitazioni in aula ed esercitazioni guidate svolte dagli studenti con lo scopo di stimolare l’approccio ai problemi con autonomia e senso critico. Tutte le attività sono svolte con supporto di lavagna digitale (tablet) e computer per la parte di programmazione.
Verifica Apprendimento
L'esame consiste nella presentazione di un progetto ed una prova orale. Il progetto da elaborare viene concordato con il docente e consiste nella scelta di un problema e nella successiva applicazione di alcune delle tecniche apprese durante il corso per la risoluzione del problema. Durante la presentazione del progetto saranno chiesti eventuali approfondimenti sugli argomenti trattati durante il corso (definizioni, esempi rilevanti, applicazioni, collegamenti tra i vari argomenti.) con il duplice scopo di verificare il livello di conoscenza e di comprensione dei contenuti del corso e di valutare l'autonomia di giudizio, la capacità di apprendimento, l'abilità comunicativa e la proprietà di linguaggio scientifico e indi valutare le facoltà logico-deduttive acquisite dallo studente. La valutazione massima del progetto è 25. Per la prova orale il voto massimo è 10. La valutazione è fatta in trentesimi, gli studenti che superano il 30 riceveranno la lode.
Testi
Programmazione di base e avanzata con JAVA W. Savitch
Contenuti
paradigmi di programmazione ad oggetti differenza tra classe ed oggetti information hiding Classi, variabili e metodi ereditarietà e polimorfismo implementazione di interfacce ed estensioni di classi classi astratte differenza classe astratta interfaccia I packages Operatori Parole chiave Differenza public private e protected Controllo del flusso Overloading e overriding I costruttori di classe Istanziazione delle variabili di classe e variabili di istanza costanti classi statiche Polimorfismo e programmazione dinamica I thread e la Java Virtual Machine La programmazione concorrente in Java Creazione e terminazione di un thread L’interfaccia Runnable Identificazione del thread La sincronizzazione dei thread Comunicazione fra thread I/O File Classi Reader e Writer Java e Networking client/server (socket e datagram socket) REST (spring) serializable JDBC interfacce grafiche java e XML (SAX, DOM) java e db no sql