LABORATORIO INTERDISCIPLINARE A

A.A. di erogazione 2020/2021
Insegnamento obbligatorio

Laurea triennale in INFORMATICA
 (A.A. 2020/2021)

Docenti

Anno di corso: 
1
Tipologia di insegnamento: 
Caratterizzante
Settore disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Attivita' formativa capogruppo: 
Crediti: 
3
Ciclo: 
Secondo Semestre
Ore di attivita' frontale: 
8
Dettaglio ore: 
Lezione (8 ore)

L’obiettivo formativo primo del LABORATORIO INTERDISCIPLINARE A e B è lo sviluppo e la messa in pratica di competenze e conoscenze riguardanti la realizzazione di applicazioni software, acquisite durante il I e II anno di corso. Nello specifico, il LABORATORIO A sarà erogato durante il I anno di corso (II semestre), mentre il LABORATORIO B durante il II anno di corso (II semestre), al fine di acquisire incrementalmente tutti gli strumenti e le metodologie necessarie allo sviluppo di una reale applicazione software.
LABORATORIO A: L’obiettivo principale della prima parte di questo insegnamento (I anno) è lo sviluppo di competenze riguardanti la realizzazione di applicazioni software, risultanti dall’applicazione delle conoscenze teoriche acquisite durante il I anno di corso, nei corsi di “Programmazione”, “Architetture degli elaboratori” e “Algoritmi e strutture dati”.
Al termine della prima parte dell’insegnamento lo studente avrà sperimentato, tramite lo sviluppo di una applicazione software reale, la progettazione di algoritmi finalizzati alla risoluzione efficiente di problemi complessi, basati su strutture dati adatte a supportare il carico computazionale del problema affrontato.
LABORATORIO B: L’obiettivo principale della seconda parte di questo insegnamento (II anno) è invece l’integrazione delle competenze acquisite nella prima parte dell’insegnamento, con lo sviluppo di capacità riguardanti l’applicazione del processo di sviluppo object-oriented per progettare e implementare applicazioni software che si interfacciano con un database relazionale a partire dai requisiti di tali applicazioni. Tale obiettivo richiede l’applicazione delle conoscenze acquisite dallo studente nei corsi di “Progettazione del Software”, “Basi di dati”, e “Programmazione concorrente e distribuita”.
Al termine della seconda parte dell’insegnamento lo studente avrà ampliato le proprie conoscenze e competenze (andando ad aggiungere funzionalità all’applicazione software sviluppata nella prima parte del corso) con la progettazione e lo sviluppo software di un’architettura distribuita, interfacciata ad un sistema di gestione dati relazionale.
Al termine dell’insegnamento lo studente avrà quindi sperimentato e sarà pertanto in grado di gestire l’intero processo di sviluppo object-oriented, ed in particolare:
1. avrà una conoscenza generale delle attività e degli artefatti prodotti durante il processo di sviluppo
2. sarà in grado di elicitare e analizzare i requisiti funzionali e non funzionali del sistema
3. sarà in grado, partendo dai requisiti analizzati, di progettare l’applicazione
4. sarà in grado di progettare e realizzare il database, e le query di selezione e manipolazione dei dati
5. sarà in grado di implementare in Java l’applicazione progettata, gestendo gli aspetti di comunicazione in ambiente distribuito, l’accesso concorrente alle risorse condivise, e l’interfacciamento con il database.

LABORATORIO A: L'insegnamento non ha prerequisiti obbligatori, ma per un proficuo svolgimento sono necessarie le conoscenze impartite negli insegnamenti di “Programmazione”, “Architetture degli elaboratori”, “Algoritmi e strutture dati”.
LABORATORIO B: L'insegnamento non ha prerequisiti obbligatori, ma per un proficuo svolgimento sono necessarie le conoscenze impartite negli insegnamenti di “Progettazione del Software”, “Basi di dati” e “Programmazione concorrente e distribuita”.

LABORATORIO A: L'acquisizione delle diverse conoscenze ed abilità attese si svilupperà̀ in modo parallelo lungo tutto l'insegnamento sul I e II anno di corso. Durante la prima parte dell’insegnamento verrà presentato un progetto software reale e verranno discussi i passi e le metodologie principali per il suo sviluppo, che dovrà essere poi affrontato in autonomia dagli studenti (singolarmente o in team).
LABORATORIO B: Durante la seconda parte dell’insegnamento, verrà discussa l’estensione delle funzionalità dell’applicazione software sviluppata durante il primo anno di corso, con gli elementi propri del Laboratorio Interdisciplinare B (progettazione, gestione degli aspetti di comunicazione in ambiente distribuito, accesso concorrente alle risorse condivise, e interfacciamento con database). Gli studenti svilupperanno queste estensioni funzionali in autonomia (singolarmente o in team).

LABORATORIO A: La presentazione dei progetti ha lo scopo di esporre le specifiche dei programmi che gli studenti dovranno realizzare. La presentazione avviene in modo interattivo, simulando almeno in parte l’interazione con lo “stakeholder” o utente dell’applicazione. In questo senso, lo studente non è passivamente oggetto della presentazione, ma viene coinvolto per farsi parte attiva ed esercitare le sue conoscenze per individuare ed esplorare i punti salienti e critici dei requisiti.
La prima parte dell’insegnamento si articola in lezioni frontali (8 ore), più attività progettuale e di sviluppo software svolta dallo studente come lavoro autonomo.
Una lezione (2 ore) è dedicata alla presentazione delle specifiche dell’applicazione software che gli studenti dovranno realizzare come progetto d’esame.
LABORATORIO B: La seconda parte dell’insegnamento si articola in lezioni frontali (8 ore), ed attività progettuale e di sviluppo software svolta dallo studente come lavoro autonomo.
Le lezioni sono dedicate alla presentazione delle attività e metodologie che caratterizzano il processo di sviluppo object-oriented e alla presentazione di approcci per documentare gli artefatti prodotti durante tale processo. Una lezione (2 ore) è dedicata alla presentazione delle specifiche delle nuove funzionalità software aggiuntive da sviluppare come progetto d’esame.

LABORATORIO A: La prova finale consiste nella realizzazione di una applicazione software, da svolgere in un gruppo di lavoro composto da 1 a 4 studenti.
Il team di sviluppo invierà il proprio lavoro al termine del I anno di corso e il docente esprimerà una valutazione di approvazione/non approvazione del lavoro svolto. L’approvazione è condizione necessaria per poter intraprendere le attività della seconda parte dell’insegnamento (Laboratorio B).
Lo scopo dell’attività di sviluppo è quello di verificare la capacità dello studente di comprendere i problemi proposti e, alla luce delle conoscenze acquisite, progettare e realizzare l’applicazione in modo da soddisfare i requisiti e le specifiche imposte.
Lo scopo della valutazione del docente è quello di verificare la validità delle scelte progettuali ed implementative effettuate.
LABORATORIO B: La prova finale consiste nell’estendere l’applicazione software sviluppata nel Laboratorio A con gli elementi caratterizzanti il Laboratorio B. Potranno accedere al Laboratorio B solo coloro i quali avranno ricevuto una valutazione “Approvato” sul Laboratorio A.
La prova finale prevede anche la discussione del progetto realizzato con i membri del gruppo.
Lo scopo dell’attività progettuale e di sviluppo è quello di verificare la capacità di comprendere i problemi proposti e, alla luce delle conoscenze acquisite, di collaborare in gruppo all'analisi dei requisiti, alla progettazione e allo sviluppo dell’applicazione in modo tale da soddisfare i requisiti.
Lo scopo della discussione è quello di verificare la validità delle scelte progettuali ed implementative effettuate e la capacità dei singoli componenti di un gruppo di comunicare e argomentare tali scelte. L'effettiva padronanza delle tecniche utilizzate viene verificata attraverso una serie di domande. Durante la discussione, dovrà essere anche mostrata una demo di esecuzione dell’applicazione realizzata.
La valutazione terrà conto dell’aderenza del sistema realizzato ai requisiti proposti, dei documenti di analisi e di progettazione prodotti sia per la realizzazione del software che per il database, delle scelte algoritmiche e di progettazione alla base dello sviluppo, e della qualità del codice sorgente prodotto e della relativa documentazione.
Il voto finale è espresso in trentesimi.

LABORATORIO A: Non sono previsti testi o materiali specifici. Gli studenti possono far riferimento ai testi e ai materiali dei corsi di “Programmazione”, “Architetture degli elaboratori”, “Algoritmi e strutture dati” e alla documentazione fornita ad hoc sul sito e-learning di Ateneo.
LABORATORIO B: Il libro di testo consigliato è:
• B. Bruegge & A. H. Dutoit, Object-Oriented Software Engineering Using UML, Patterns, and Java. Third Edition, Prentice Hall
Gli studenti inoltre possono far riferimento ai testi e ai materiali dei corsi di “Progettazione del Software”, “Basi di dati” e “Programmazione concorrente e distribuita”.
Le slide delle lezioni in formato PDF ed eventuale materiale necessario allo svolgimento del progetto sono messe a disposizione sulla piattaforma e-learning di Ateneo.

Il docente riceve su appuntamento, previa richiesta via e-mail a davide.tosi@uninsubria.it. Il docente risponde solo alle e-mail firmate e provenienti dal dominio studenti.uninsubria.it.