- Docente: Enrico Denti
- Crediti formativi: 12
- SSD: ING-INF/05
- Lingua di insegnamento: Italiano
- Moduli: Enrico Denti (Modulo 1) Roberta Calegari (Modulo 2) Ambra Molesini (Modulo 3)
- Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2) Convenzionale - Lezioni in presenza (Modulo 3)
- Campus: Bologna
-
Corso:
Laurea in
Ingegneria informatica (cod. 9254)
Valido anche per Laurea in Ingegneria dell'energia elettrica (cod. 9255)
Conoscenze e abilità da conseguire
Al termine del corso lo studente ha una conoscenza approfondita della programmazione a oggetti, sia dal punto di vista concettuale che dal punto di vista pratico, per lo sviluppo di applicazioni software di media complessità. In particolare: - possiede i fondamenti metodologici per l’analisi e lo sviluppo di sistemi software secondo il paradigma a oggetti - conosce approfonditamente le tecniche di programmazione a oggetti, sia dal punto di vista concettuale che dal punto di vista pratico, e sa applicarle a casi concreti di media complessità nel linguaggio Java - possiede le nozioni fondamentali relative agli aspetti funzionali nei moderni linguaggi a oggetti - conosce e sa utilizzare gli elementi di base per la costruzione di interfacce grafiche secondo tecniche di programmazione event-driven - conosce e sa utilizzare le strutture dati fondamentali e i relativi 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 e al linguaggio Java: componenti software in Java, 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 agli Stream di operazioni (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 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.
La metodologia di insegnamento prevede un approccio integrato teoria+pratica, sia nel modulo 1 - che comunque discute e presenta continuamente esempi pratici - 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.
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 (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.
Le regole d'esame sono disponibili sulla home page del corso e sul sito VirtuaLE.
L'esito positivo (almeno 18/30) della prova pratica di laboratorio è di norma 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).
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 Roberta Calegari
Consulta il sito web di Ambra Molesini
SDGs
L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.