- Docente: Danilo Pianini
- Crediti formativi: 9
- SSD: ING-INF/05
- Lingua di insegnamento: Italiano
- Moduli: Danilo Pianini (Modulo 1) Gianluca Aguzzi (Modulo 2) Angelo Filaseta (Modulo 3)
- Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2) Convenzionale - Lezioni in presenza (Modulo 3)
- Campus: Cesena
- Corso: Laurea in Tecnologie dei sistemi informatici (cod. 6007)
-
Orario delle lezioni (Modulo 1)
dal 18/09/2025 al 31/10/2025
-
Orario delle lezioni (Modulo 2)
dal 06/11/2025 al 19/12/2025
-
Orario delle lezioni (Modulo 3)
dal 23/09/2025 al 16/12/2025
Conoscenze e abilità da conseguire
Al termine del corso, lo studente possiede le conoscenze di base dei paradigmi di programmazione per software in-the-large, quali il paradigma object-oriented e quello funzionale, dei suoi principali pattern di progettazione, della sua incarnazione in linguaggi moderni e relativi framework di sviluppo. È in grado quindi di progettare e sviluppare applicazioni complete di medio-piccole dimensioni, usando processi di sviluppo e tecniche agili, tra cui l'approccio DevOps alla conduzione del progetto.
Contenuti
-
Fondamenti di analisi, progettazione e programmazione orientata agli oggetti
-
Linguaggio Java: panoramica e strumenti di sviluppo
-
Concetti base e tipici dei linguaggi a oggetti: classi, oggetti, metodi, campi, istanziazione
-
Polimorfismo, ereditarietà e riuso: interfacce e classi astratte
-
Aspetti avanzati: programmazione generica, annotazioni, gestione delle eccezioni, elementi di programmazione funzionale (espressioni lambda)
-
Librerie fondamentali per la realizzazione di programmi
-
Gestione dell’input/output
-
Programmazione di interfacce grafiche
-
Elementi introduttivi di programmazione concorrente
-
Cenni a design pattern e a tecniche di programmazione efficace
-
Strumenti di sviluppo e basi di DevOps: JDK, IntelliJ IDEA, Git, Gradle, continuous integration
Testi/Bibliografia
Testo di riferimento:
-
Bruce Eckel, Thinking in Java — Fourth Edition
Testi consigliati:
-
Joshua Bloch, Effective Java — Second Edition
-
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns
L’acquisto di tali libri non è richiesto, poiché saranno fornite slide sostitutive. Il corso farà inoltre uso di tutorial e documentazione tecnica disponibile online.
Metodi didattici
La didattica si articola in lezioni frontali ed esercitazioni in laboratorio parzialmente guidate.
In aula vengono presentate le tecniche di programmazione a oggetti e le caratteristiche del linguaggio Java, con esercizi volti a stimolare la discussione critica con gli studenti.
In laboratorio si introducono i principali strumenti di sviluppo e vengono assegnati compiti di programmazione per consolidare le competenze pratiche attraverso approcci attivi.
Data la natura delle attività previste, la frequenza richiede la preventiva partecipazione ai moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, erogati in modalità e-learning.
Modalità di verifica e valutazione dell'apprendimento
La verifica dell’apprendimento avviene tramite colloquio orale con presentazione di un progetto.
Gli studenti, organizzati in gruppi di circa tre persone, realizzano un progetto software in Java e producono una relazione che descrive requisiti, progettazione e implementazione. La valutazione tiene conto della qualità della soluzione proposta e della discussione delle scelte progettuali.
Strumenti a supporto della didattica
Il docente fornirà materiale didattico (in particolare slide ed esercizi). L’attività laboratoriale favorirà l’apprendimento pratico ed è previsto il supporto di un tutor.
Orario di ricevimento
Consulta il sito web di Danilo Pianini
Consulta il sito web di Gianluca Aguzzi
Consulta il sito web di Angelo Filaseta