B8554 - SISTEMI SOFTWARE A OGGETTI T (A-K)

Anno Accademico 2025/2026

  • Docente: Enrico Denti
  • Crediti formativi: 12
  • Lingua di insegnamento: Italiano
  • Moduli: Enrico Denti (Modulo 1) (Modulo 2)
  • Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
  • Campus: Bologna
  • Corso: Laurea in Ingegneria informatica (cod. 6668)

    Valido anche per Laurea in Ingegneria informatica (cod. 6668)

Conoscenze e abilità da conseguire

Al termine del corso lo studente ha una conoscenza approfondita dei sistemi software a oggetti, sia dal punto di vista metodologico-concettuale sia dal punto di vista pratico, ed è capace di sviluppare applicazioni software di media complessità. In particolare: a) possiede i fondamenti metodologici per l’analisi e lo sviluppo di sistemi software secondo il paradigma a oggetti; b) conosce approfonditamente le tecniche di programmazione a oggetti, sia dal punto di vista concettuale che dal punto di vista pratico, in particolare nel linguaggio Java, e sa applicarle a casi concreti di media complessità; c) possiede le nozioni fondamentali relative agli aspetti funzionali nei moderni linguaggi a oggetti; d) conosce e sa utilizzare gli elementi di base per la costruzione di interfacce grafiche secondo tecniche di programmazione event-driven; e) conosce e sa utilizzare le strutture dati fondamentali e alcuni dei principali algoritmi.

Contenuti

Concetti fondamentali dei linguaggi di programmazione. Famiglie di linguaggi imperativi, funzionali, logici e a oggetti. Introduzione alla progettazione del software: componenti software, tipi di dato astratto (5h).

Concetti, metodologie e linguaggi. Introduzione alla programmazione ad oggetti in un'ottica multi-linguaggio (Java, C#, Scala, Kotlin), con specifico focus sul linguaggio Java: oggetti singleton, classi e istanze, meccanismi di costruzione-distruzione di istanze. Oggetti composti, ereditarietà, polimorfismo e genericità. Classi astratte, interfacce: il ruolo delle interfacce nel progetto e loro relazione con le classi. (30h frontale + 12h lab)

Ereditarietà semplice e multipla fra interfacce. Lambda expression e interfacce funzionali. (12h + 6h lab)

Il concetto di eccezione. Stream di I/O. Principali strutture dati: liste, hashmap, alberi. Algoritmi su tali strutture dati e loro implementazione sia in forma procedurale sia in forma orientata agli oggetti in Java. (20h + 12h lab)

Introduzione alla programmazione funzionale e specificatamente agli stream di operazioni in Java (3h)

Elementi di base per la costruzione di interfacce grafiche: concetto di evento e programmazione event-driven, la piattaforma JavaFX. (10h+10h lab)

Testi/Bibliografia

Si veda l'elenco aggiornato disponibile on-line sul portale didattico curato dal docente

Metodi didattici

Il corso viene erogato in modo fortemente interattivo, alternando la discussione dei problemi, illustrati mediante proiezione di diapositive (scaricabili dallo studente dal sistema VirtuaLe.unibo.it, in modo da evitare allo studente l'ansia di dover trascrivere tutto ciò che viene mostrato, permettendogli di concentrarsi sui contenuti esposti), esempi concreti, esempi live attraverso l'uso d una pluralità di strumenti di programmazione.

La metodologia di insegnamento prevede infatti un approccio fortemente integrato teoria+pratica, sia nel modulo 1 - che discute e presenta continuamente esempi pratici tramite live session - sia nei moduli di esercitazione di laboratorio, che costituiscono sessioni mirate di sviluppo per obiettivi, dove si sfruttano anche tecnologie di interazione (MS Teams) per agire a livello di gruppo.

Più in generale, lezioni ed esercitazioni sono continuamente intercalate, alternando l'esposizione di un concetto o costrutto linguistico con i relativi esempi e la loro utilizzabilità pratica in casi reali, di complessità via via crescente.

Il modulo di taglio più teorico è strettamente integrato con il modulo di laboratorio: ogni esercitazione pratica affronta uno specifico argomento (tipicamente spiegato nella/e lezione/i precedente/i), mediante la proposta di esercizi e casi di studio il più possibile concreti, per la cui soluzione è necessario mettere a frutto quanto acquisito.

Per questi motivi, in considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, [https://elearning-sicurezza.unibo.it/] in modalità e-learning.

NON è assolutamente consentito l'uso di tecniche di AI, anche generativa, da parte degli studenti, se non in scenari prestabiliti e concordati con il docente, e sempre solo limitatamente a specifiche applicazioni e in specifici contesti.

 

Modalità di verifica e valutazione dell'apprendimento

La verifica dell'apprendimento si svolge sia in forma di autovalutazione dello studente, tramite le esercitazioni sistematicamente proposte in laboratorio durante il corso, sia al termine, sotto forma di prova d'esame.

La prova d'esame è integrata con quella del modulo di laboratorio svolto in parallelo e consiste in una prova pratica svolta a computer, così da potersi avvalere degli strumenti su esso disponibili nonché di testi, dispense e manuali, che lo studente potrà liberamente portare con sé. Coerentemente con l'obiettivo della prova, che è simulare 'nel piccolo' una sessione di lavoro di un ingegnere professionista di fronte a un problema concreto da risolvere in un tempo assegnato e non già costituire un mero esercizio di memoria, la prova consiste nella risoluzione di un problema applicativo di media complessità: il programma consegnato deve essere compilabile e superare almeno i 2/3 dei test forniti (diversamente, non sarà neppure valutato, con conseguente esito negativo dell'esame) e ragionevolmente funzionante. Il tema d'esame prevede da parte del candidato sia l'analisi della parte di applicazione fornita ("start kit"), sia lo sviluppo della parte richiesta: quest'ultima è divisa in sottoparti, ciascuna con un proprio punteggio dettagliato nel testo, in modo da supportare effettivamente il processo di auto-valutazione dello studente. NON è consentita alcuna forma di interazione con altri, né l'uso di AI in alcuna forma: ciò causerà l'immediato annullamento del compito e l'allontanamento del trasgressore.

Le regole d'esame dettagliate sono disponibili sulla home page del corso e sul sito VirtuaLE.

L'esito positivo (almeno 18/30) della prova pratica di laboratorio è di norma direttamente verbalizzabile: la Commissione si riserva comunque di effettuare una prova orale ogni qual volta lo ritenga necessario. In tal caso, l'orale consiste principalmente - ma non esclusivamente - nella discussione della prova di laboratorio e in domande tese ad appurare la competenza dello studente nelle aree che abbiano evidenziato le maggiori lacune.

Lo studente può comunque chiedere di affrontare una prova orale facoltativa: in tal caso, l'orale verte sull'intero programma del corso e il voto ottenuto è comunque verbalizzato.

La richiesta di orale dev'essere fatta al docente entro un mese dalla prova di laboratorio: il corrispondente orale dovrà essere sostenuto entro quattro mesi dalla data della prova originale. Nel calcolo dei suddetti periodi non si computano i periodi festivi (Natale, Pasqua, agosto).

Studenti/sse con DSA o disabilità temporanee o permanenti: si raccomanda di contattare per tempo l’ufficio di Ateneo responsabile (https://site.unibo.it/studenti-con-disabilita-e-dsa/it ): sarà sua cura proporre agli/lle studenti/sse interessati/e eventuali adattamenti, che dovranno comunque essere sottoposti, con un anticipo di 15 giorni, all’approvazione del/della docente, che ne valuterà l'opportunità anche in relazione agli obiettivi formativi dell'insegnamento.

IMPORTANTE: NON è assolutamente consentito l'uso di tecniche di AI, anche generativa, per nessuna ragione durante l'esame. La violazione di questa regola comporterà l'immediato annullamento della prova.

L'esito dell'esame è sempre verbalizzato, coerentemente con i regolamenti di Ateneo: è tuttavia concesso allo studente un tempo adeguato (almeno fino all'appello successivo) per decidere se accettare o rifiutare il voto.

Strumenti a supporto della didattica

Il sito VirtuaLE.unibo.it ospita tutto il materiale del corso, dalle diapositive proiettate e discusse a lezione ad altre dispense integrative, start kit, esercizi, annunci e forum di discussione.

Un elenco esaustivo di testi di riferimento e manuali è consultabile sia sul sito Web, sia sulle diapositive, ed è frequentemente aggiornato. Il sito del corso, sul portale didattico del docente, fornisce ultime notizie e ospita l'archivio delle prove d'esame passate.

I principali strumenti per la parte pratica sono il JDK (Java Development Kit) ed Eclipse, nella versione "IDE for Java developers"; sono altresì utilizzati strumenti online, sia per Java sia per altri linguaggi (Kotlin, Scala, C#).

Link ad altre eventuali informazioni

http://enricodenti.disi.unibo.it/

Orario di ricevimento

Consulta il sito web di Enrico Denti

Consulta il sito web di

SDGs

Istruzione di qualità Parità di genere Lavoro dignitoso e crescita economica Imprese innovazione e infrastrutture

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.