SWAP - Semantic Web Access and Personalization Research Group

Corsi.BasileMAP2122 History

Hide minor edits - Show changes to markup

February 18, 2022, at 05:48 AM EST by 193.204.189.14 -
February 18, 2022, at 05:48 AM EST by 193.204.189.14 -
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 193.204.189.14 -
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.