Corsi.BasileMAP2122 History
Show minor edits - Show changes to markup
February 18, 2022, at 05:48 AM EST
by
- February 18, 2022, at 05:48 AM EST
by
- Changed lines 11-15 from:
- Inizio lezioni: 01/03/2022
to:
- Inizio lezioni: 02/03/2022
- Orario provvisorio:
- Lun. 09:00-11:15 (Aula B piano terra)
- Mer. 09:15-11:30 (Aula B piano terra)
- Gio. 10:45-13:00 (Aula B piano terra)
November 17, 2021, at 01:16 PM EST
by
- Added lines 1-65:
Metodi Avanzati di Programmazione (Corso B) (A.A. 2021/2022)
CdL in Informatica
Docente: Pierpaolo Basile
CFU: 7+2 (86 ore, 56 teoria e 30 ore esercitazione e/o laboratorio)
Inizio lezioni: (secondo semestre)
Metodi di valutazione: prova orale e caso di studio sviluppato in parte in laboratorio, realizzato in un gruppo di massimo tre componenti
Scheda del corso: PDF scheda
News
- Inizio lezioni: 01/03/2022
Programma preliminare
- Introduzione al corso
- Introduzione ai paradigmi di programmazione: i tre approcci alla programmazione: operazionale, definizionale e dimostrazionale
- L’astrazione nella programmazione
- Fondamenti: Introduzione all'astrazione
- Astrazione di funzione, di procedura, di controllo e di selettore
- Astrazione di tipo e tipi astratti di dato
- Specifiche algebriche e assiomatiche per i tipi astratti di dato
- I moduli per l’incapsulamento dell’informazione e l'information hiding
- Oggetti e classi di oggetti
- Astrazione di dati: Tipo astratto di dato vs. classe di oggetti
- Astrazione generica
- Ambienti e linguaggi di programmazione
- La programmazione orientata agli oggetti
- Fondamenti: oggetti, classi concrete, classi astratte, metaclassi, ereditarietà singola ed ereditarietà multipla, polimorfismo, gerarchia di classi e gerarchia di interfacce
- Composizione di classi
- Confronto tra ereditarietà e composizione nel riuso del software
- Ambienti e linguaggi di programmazione
- Java: caratteristiche generali del linguaggio
- Java e Internet
- Java vs. C++
- Ambienti di sviluppo Java
- Oggetti in Java: costruttori, distruttori, metodi, argomenti e valori di ritorno
- Controllare il flusso di esecuzione: uso degli operatori Java, il controllo di esecuzione, l’inizializzazione
- Nascondere le implementazioni: i package, i modificatori di accesso, le interfacce
- Il riuso delle classi in Java: ereditarietà, derivazione, protetta, polimorfismo
- I contenitori: array e collezioni
- Approfondimenti su Java: il trattamento delle eccezioni, identificazione di tipo al run-time, programmazione generica in Java, il sistema I/O di Java
- Connessione con le Basi di Dati: JDBC
- Progettazione e creazione di interfacce per applicazioni: il package SWING
- Programmazione in rete: socket
- Il multithreading: creazione di classi attive, sincronizzazione nell’accesso dei metodi
- Estensione funzionale in Java: Lambda espressioni in Java, Pipeline e stream, Cenni di computazione in parallelo
- Esercitazioni guidate in Java
- Progetto di applicazioni con singole classi
- Progetto di applicazioni con più classi organizzate gerarchicamente e in package
- Progetto di applicazioni con classi astratte e uso del polimorfismo
- Progetto di applicazioni con contenitori e trattamento delle eccezioni
- Progetto di applicazioni con I/O da file
- Progetto di connessione a database
- Progetto di applicazioni con GUI mediante con SWING
- Progetto di applicazioni client-server e multithreading
Proposte di tesi
- Progettazione e sviluppo di algoritmi per l'analisi automatica del linguaggio
- Progettazione e sviluppo di algoritmi per l'accesso intelligente alle informazioni
Progetti
Lo scopo del progetto è lo sviluppo di un'avventura testuale o grafica utilizzando il linguaggio Java e le nozioni apprese durante il corso. In questa sezione verranno pubblicati i progetti che gli studenti hanno deciso di rendere pubblici.