Introduzione al corso

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.