Politecnico di Torino | |||||||||||||||||
Anno Accademico 2011/12 | |||||||||||||||||
02NRIOV Interdisciplinary project |
|||||||||||||||||
Corso di Laurea Magistrale in Ingegneria Informatica (Computer Engineering) - Torino |
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
Esclusioni: 01NPZ; 01NRD; 01NRJ; 01BIT; 01NWA; 01NRL; 02JGR; 01NRK |
Presentazione
The course is thaugt in English.
Il corso mira a fornire gli strumenti metodologici per la progettazione, lo sviluppo, la documentazione e la presentazione di un progetto applicativo nell'ambito dell'ingegneria dell'informazione. Il corso è facoltativo ed è inserito nel secondo semestre del secondo anno per il corso di laurea magistrale in ingegneria informatica. |
Risultati di apprendimento attesi
Lo scopo fondamentale dell'insegnamento è quello di permettere agli allievi di acquisire la capacità di realizzare applicazioni tipiche dell'ingegneria dell'Informazione, mediante lo sviluppo di un sistema informatico, che soddisfi le specifiche, sia completo nelle funzionalità richieste, abbia un grado di complessità significativa e si comporti correttamente nelle molteplici condizioni di funzionamento. Questa abilità sarà ottenuta utilizzando una metodologia di 'Learning by Doing'.
Oltre a questa generale capacità di problem solving, gli allievi acquisiranno le seguenti conoscenze specifiche: - conoscenza approfondita di metodologie di analisi, modellazione, progettazione, programmazione ad oggetti e documentazione (UML,JAVA,C++), che permettano la portabilità del progetto realizzato da una architettura ad un'altra ; - conoscenza approfondita di tecniche di programmazione concorrente multithread e multiprocesso e loro applicazione pratica su sistemi di dimensioni significative, su piattaforme standard quali Win 32, Linux e/o su sistemi operativi in tempo reale; - capacità di realizzare applicazioni con vincoli stringenti sulle prestazioni, sui consumi, sul tempo di risposta del sistema agli eventi esterni, ottenibili mediante l'utilizzo di opportuni software di base quali: sistema operativo adeguato e librerie specifiche ed una ottimizzazione del codice realizzante l'applicazione, sviluppato dagli allievi; - conoscenza delle metodologie di sviluppo di sistemi embedded, per realizzare le applicazioni indicate precedentemente; - capacità di progettare un sistema complesso come un insieme cooperante di sottosistemi più semplici, da scegliere fra quelli eventualmente disponibili, perché già realizzati da altri, oppure da implementare specificatamente nel progetto; - capacità di definire, validare ed eseguire i programmi di test dell'applicazione complessiva e dei sottosistemi realizzanti la medesima, in varie e significative condizioni di funzionamento: l'allievo progettista definirà ed eseguirà il programma di test del codice o del progetto hardware sviluppato personalmente, e/o di quello sviluppato dai colleghi del gruppo di progetto, (capacità di realizzare un progetto che dovrà essere validato da altri e, simmetricamente, capacità di validare programmi di cui non si conosce l'implementazione, ma solo le specifiche e le interfacce di comunicazione); - conoscenze teoriche e pratiche delle problematiche di project management ed in particolare la capacità di valutare i tempi richiesti per lo sviluppo di attività, date le specifiche delle medesime; - capacità di lavorare in gruppo, sperimentando metodi di suddivisione del lavoro, di comunicazione informale e formale in modo da mettere in comune la creatività e le conoscenze specifiche di ciascun singolo. L'allievo acquisirà autonomia di giudizio, capacità di apprendimento ed abilità comunicative, che dovranno essere utilizzate notevolmente per lo svolgimento in gruppo del progetto assegnato. |
Prerequisiti / Conoscenze pregresse
Prerequisiti Essenziali:
- Linguaggi di programmazione procedurali: C, Matlab. - Metodologie di analisi, progettazione e programmazione ad oggetti: linguaggi UML, Java e C++. - Programmazione concorrente multi processo e multi thread. Requisiti aggiuntivi che dipendono dal progetto da svolgere (e' richiesta la conoscenza di almeno 2 dei 3 seguenti prerequisiti): - Conoscenza di base delle reti e dei protocolli di comunicazione fra computer, con particolare riferimento allo stack TCP/IP - Conoscenza di base delle principali metodologie di progettazione concettuale e logica delle basi di dati, dei linguaggi e degli strumenti relativi (schema Entity Relationship, SQL, DBMS) Conoscenza delle architetture di calcolatori, in particolare la gestione dei periferici |
Programma
Lezioni in aula, 15 ore corrispondenti a 1.5 crediti:
- Approfondimento del linguaggio UML in particolare dei diagrammi relativi al controllo dei sistemi: diagrammi di stato, di sequenza, di collaborazione. Partizionamento di un sistema informatico fra sottosistemi, eventualmente di diversa natura (hardware e software). Strumenti di sviluppo e di documentazione automatica. (0.6 crediti). - Metodologie e strumenti di project management e reporting (0.2 crediti). - Complementi di sistemi operativi Embedded e Real Time (0.4 crediti). Presentazione di un esempio di progetto interdisciplinare già svolto (specifiche, progetto, sviluppo del codice, testing, risultati, documentazione) (0.3 crediti). |
Organizzazione dell'insegnamento
Gli studenti, sotto la guida e la supervisione del docente, provano a risolvere in laboratorio il problema di natura interdisciplinare assegnato, riguardante alcuni campi dell'ingegneria informatica e/ o dell'Informazione. Si sottolinea il fatto che, inizialmente gli allievi conoscono solamente in modo generale le possibili metodiche che possono portare ad una soddisfacente soluzione del problema. La prima fase del progetto, sarà svolta in stretto contatto con il docente, che fornirà le specifiche di massima del progetto, successivamente occorrerà svolgere una ricerca bibliografica, riguardante la descrizione di applicazioni analoghe a quelle da svolgere nel progetto, infine il gruppo definirà una prima stesura delle specifiche di dettaglio dell'applicazione assegnata, che sarà convalidata dal docente.
Le ore sperimentali di laboratorio servono agli allievi per realizzare i progetti e sono la parte più importante dell'insegnamento, dove apprenderanno a risolvere problemi relativi alla loro professione con la tecnica di 'Learning by Doing'. Durante queste ore gli studenti saranno divisi in gruppi di lavoro. Tali gruppi saranno composti di norma da 2 allievi. Ad ogni gruppo verrà assegnato un progetto interdisciplinare distinto dagli altri. In generale non vi saranno legami fra i progetti, ma in casi eccezionali, con problemi aventi dimensioni notevoli e/o richiedano tipi di competenze pregresse non coperte in un singolo gruppo, più gruppi collaboreranno alla realizzazione di una unica applicazione, in cui siano comunque ben definite le interfacce e le responsabilità di ciascun gruppo e di ciascun allievo. Ogni progetto richiederà un carico di circa 110 ore in totale; a tal fine andranno conteggiate le ore svolte nel laboratorio sperimentale LADISPE del DAUIN con l'assistenza del docente( 45 ore), le ore svolte nel medesimo laboratorio senza assistenza, ma con l'utilizzo di tutte gli strumenti e apparecchiature richieste per lo svolgimento del progetto e le ore svolte a casa. Agli allievi saranno concesse in prestito, per periodi limitati, apparecchiature del LADISPE necessarie per lo svolgimento anche a casa del progetto, acquistate dal LADISPE espressamente per lo sviluppo delle esercitazioni sperimentali in più esemplari. Nel dettaglio saranno richieste: - alcune ore per i colloqui preliminari del docente con gli studenti, presentazione dei progetti, discussione e assegnazione dei progetti; - un minimo di 100 ore per lo svolgimento del lavoro assegnato (Analisi del problema, ricerca bibliografica, definizione delle specifiche, sviluppo, testing, raccolta dei risultati,preparazione della documentazione durante tutta la durata del progetto); - alcune ore per la preparazione della documentazione finale e per la presentazione dei risultati finali. L'argomento del progetto e le specifiche di massima verranno di norma preparate e scelte dal docente dell'insegnamento; in casi eccezionali, gli studenti potranno proporre l'argomento del progetto, purché abbiano ottenuto una espressione di interesse al progetto da parte di altri docenti o ricercatori del Politecnico, o di altri enti di ricerca quali ad es. I.S.M. Boella, C.S.P., C.N.R, I progetti affronteranno principalmente problematiche riguardanti: Applicazioni multimediali e di trasmissione di dati, voce e video, applicazione di tecniche di sicurezza informatica, sistemi embedded e Real Time, con l'utilizzo di diversi sistemi operativi anche non standard( es. Linux RTI, WinCE, WinMobile, Linux Embedded, Symbian) e sviluppo di applicazioni per dispositivi mobili come N900 (maemo), Openmoko, Iphone (con iphone SDK), oppure utilizzanti schede embedded utilizzanti processori ARM ,DSP o microcontrollori e fornite di interfacce particolari. Oltre alle applicazioni indicate precedentemente potranno essere assegnati progetti riguardanti: applicazioni distribuite, applicazioni WEB, applicazioni che definiranno e utilizzeranno basi dati concentrate o distribuite, sistemi hardware per l'interfacciamento di periferici speciali e per l'elaborazione dei segnali, simulazione di sistemi di controllo e di sistemi di telecomunicazioni, simulazione e realizzazione di protocolli specifici, in particolare quelli riguardanti le reti di sensori. L'assegnazione del progetto verrà fatta dal docente sulla base delle predisposizioni degli allievi a svolgere un determinato argomento e valutate le richieste e le necessità espresse precedentemente dai singoli studenti. |
Testi richiesti o raccomandati: letture, dispense, altro materiale didattico
Sono disponibili copie dei lucidi utilizzati nelle lezioni, esempi di progetti svolti negli anni precedenti, i manuali dei sistemi operativi e delle schede embedded da utilizzare ed esempi di utilizzo delle medesime. Tutto il materiale didattico è scaricabile da un sito web o attraverso il portale dell' insegnamento, oppure dal sito del Laboratorio LADISPE del DAUIN.
Il docente fornirà il materiale specifico ad ogni progetto sotto forma di testi specifici su architetture speciali, sistemi operativi real time, metodologie di design ad oggetti, sistemi multimediali, tecniche di crittografia e di sicurezza ecc, data sheet di componenti elettronici o di sottosistemi hardware e/o software, esempi applicativi di codice, indirizzi Internet di gruppi di ricerca, di enti di standardizzazione e di portali dove si possono trovare applicazioni open source. |
Criteri, regole e procedure per l'esame
Gli allievi saranno valutati singolarmente, perché seguiti personalmente dal docente nello sviluppo del progetto.
Il voto finale terrà conto in modo pesato del lavoro svolto (quantità e qualità) durante il progetto, dei risultati finali ottenuti, e della qualità della relazione finale sia per quanto riguarda la forma scritta che per la successiva presentazione orale (obbligatoria). Quest'ultima sarà parte integrante della valutazione finale. |
Orario delle lezioni |
Statistiche superamento esami |
|