Obiettivi dell’insegnamento
Rendere lo studente in grado di realizzare progetti software complessi, utilizzando le tecniche e gli strumenti moderni dell’ingegneria del software. Tecniche di didattica innovativa (“flipped classroom”) verranno utilizzate per stimolare la partecipazione degli studenti al corso e lo sviluppo di capacità di studio autonomo.
Risultati di apprendimento attesi
| Descrittori di Dublino | Risultati di apprendimento attesi |
|---|---|
| Conoscenza e comprensione | A seguito del superamento dell’esame lo studente conosce: - le tecniche di progettazione e programmazione secondo il paradigma orientato agli oggetti, attraverso l’uso dei linguaggi UML e Java; - i principi alla base della specifica formale dei requisiti di una applicazione software; - i principi alla base della verifica di correttezza (test) di una applicazione software; - i principi della programmazione funzionale in Java - le tecnologie offerte da Java per lo sviluppo di applicazioni client-server |
| Capacità di applicare conoscenza e comprensione | Attraverso le esercitazioni su casi di studio, ed a seguito del superamento dell’esame, lo studente acquisisce la capacità di applicare le tecniche e le tecnologie apprese a casi reali, per quanto di complessità limitata. |
| Autonomia di giudizio | A seguito del superamento dell’esame lo studente: - è in grado di risolvere problemi di programmazione e progettazione orientate agli oggetti su temi anche non direttamente illustrati durante le lezioni/esercitazioni - è in grado di gestire problemi di analisi, progetto, sviluppo e test di applicazioni software, anche se non strettamente inerenti alle problematiche affrontate nel corso assumendo decisioni motivate |
| Capacità di apprendimento | Anche attraverso l’uso di tecniche di “flipped classroom” lo studente acquisisce la capacità di apprendere in maniera autonoma argomenti legati alle tematiche generali affrontate durante il corso. |
Argomenti trattati
Introduzione all’Ingegneria del software. Il ciclo di vita del software. Introduzione al modello orientato agli oggetti e alla sua specifica. La progettazione orientata agli oggetti:
- Il linguaggio Java.
- La specifica e l’implementazione di metodi e classi.
- Unified Modelling Language: diagrammi di sequenza e delle classi.
- Schemi di progettazione (design pattern - modalità flipped). Cenni di programmazione funzionale in Java. Principi del test funzionale e strutturale (modalità flipped). Principi di programmazione di rete e distribuita. Principi di programmazione delle interfacce utente.
Prerequisiti
Programmazione in linguaggio C, logica matematica, strutture dati e algoritmi, automi, complessità.
Modalità di valutazione
L’esame consiste in una prova scritta, con esercizi e domande aperte che copriranno tutti gli argomenti trattati nel corso. Durante la prova è possibile consultare liberamente libri e appunti. In caso di consegna di un compito fortemente insufficiente, lo studente non potrà partecipare all’appello successivo. Non sono previste prove in itinere.