28006 - FONDAMENTI DI INFORMATICA T-2

Scheda insegnamento

SDGs

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

Istruzione di qualità Parità di genere

Anno Accademico 2020/2021

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 diretta dal computer del docente, in aula, di diapositive (scaricabili dallo studente dal sistema Insegnamenti On Line), in modo da evitare allo studente l'ansia di dover trascrivere tutto ciò che viene mostrato, permettendogli di concentrarsi sui contenuti esposti.

Lezioni ed esercitazioni sono continuamente intercalate, alternando l'esposizione di un concetto o costrutto linguistico con i relativi esempi, di cui viene immediatamente mostrato l'uso effettivo in diretta.

Questo 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.

Modalità di verifica 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 in laboratorio, 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.

Le regole per l'esame online sono disponibili sulla home page del corso e su IOL.

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

Sono disponibili sul sito Insegnamenti On Line copia delle diapositive proiettate e discusse a lezione a cura del docente, nonché alcune dispense integrative, annunci e forum di discussione.

Un elenco esaustivo di testi di riferimento e manuali è consultabile sia sul sito Web, sia sulle diapositive, ed è spesso aggiornato.

Il sito del corso, sul portale didattico del docente, fornisce inoltre suggerimenti per ulteriori esercizi e approfondimenti.

I principali strumenti per la parte pratica sono il JDK (Java Development Kit) ed Eclipse, nella versione "IDE for Java developers"; altri strumenti di uso saltuario, e comunque al di là delle competenze strettamente richieste in sede d'esame, sono Visual Studio (per alcune prove in C#), SceneBuilder, nonché l'utilizzo di strumenti online (per Kotlin e Scala).

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