|
Insegnamento
PROGRAMMAZIONE DI SISTEMI EMBEDDED
IN01122661, A.A. 2018/19
Informazioni valide per gli studenti immatricolati nell'A.A. 2017/18
Dettaglio crediti formativi
Tipologia |
Ambito Disciplinare |
Settore Scientifico-Disciplinare |
Crediti |
CARATTERIZZANTE |
Ingegneria informatica |
ING-INF/05 |
9.0 |
Organizzazione dell'insegnamento
Periodo di erogazione |
Secondo semestre |
Anno di corso |
II Anno |
Modalità di erogazione |
frontale |
Tipo ore |
Crediti |
Ore di didattica assistita |
Ore Studio Individuale |
LEZIONE |
9.0 |
72 |
153.0 |
Inizio attività didattiche |
25/02/2019 |
Fine attività didattiche |
14/06/2019 |
Visualizza il calendario delle lezioni |
Lezioni 2019/20 Ord.2009
|
Commissioni d'esame
Commissione |
Dal |
Al |
Membri |
10 A.A. 2019/2020 |
01/10/2019 |
15/03/2021 |
FANTOZZI
CARLO
(Presidente)
SILVESTRI
FRANCESCO
(Membro Effettivo)
BILARDI
GIANFRANCO
(Supplente)
GHIDONI
STEFANO
(Supplente)
PESERICO STECCHINI NEGRI DE SALVI
ENOCH
(Supplente)
PIETRACAPRINA
ANDREA ALBERTO
(Supplente)
PUCCI
GEPPINO
(Supplente)
VANDIN
FABIO
(Supplente)
|
9 A.A. 2018/2019 |
01/10/2018 |
15/03/2020 |
FANTOZZI
CARLO
(Presidente)
SILVESTRI
FRANCESCO
(Membro Effettivo)
BILARDI
GIANFRANCO
(Supplente)
GHIDONI
STEFANO
(Supplente)
PESERICO STECCHINI NEGRI DE SALVI
ENOCH
(Supplente)
PIETRACAPRINA
ANDREA ALBERTO
(Supplente)
PUCCI
GEPPINO
(Supplente)
VANDIN
FABIO
(Supplente)
|
8 A.A. 2017/2018 |
01/10/2017 |
15/03/2019 |
FANTOZZI
CARLO
(Presidente)
CANAZZA TARGON
SERGIO
(Membro Effettivo)
COMIN
MATTEO
(Supplente)
NANNI
LORIS
(Supplente)
PESERICO STECCHINI NEGRI DE SALVI
ENOCH
(Supplente)
PIETRACAPRINA
ANDREA ALBERTO
(Supplente)
PUCCI
GEPPINO
(Supplente)
RODA'
ANTONIO
(Supplente)
SILVESTRI
FRANCESCO
(Supplente)
VANDIN
FABIO
(Supplente)
|
Prerequisiti:
|
Conoscenza dell'organizzazione hardware e dei principi di funzionamento degli elaboratori.
Conoscenza delle funzioni svolte dall'hardware e utilizzate dai sistemi operativi.
Conoscenza dei tipi di dati astratti fondamentali (esempi: lista, pila, coda, dizionario, grafo, albero).
Conoscenza dei principi della programmazione ad oggetti.
Conoscenza delle principali tecniche per il progetto di algoritmi e strutture dati efficienti.
Abilità di progettare, implementare e caratterizzare dal punto di vista prestazionale algoritmi e strutture dati. |
Conoscenze e abilita' da acquisire:
|
Conoscenza degli elementi architetturali fondamentali comuni alle moderne piattaforme software per smartphone e tablet (Android, iOS, Windows 10 Mobile).
Conoscenza di rilevanti algoritmi utilizzati nel software applicativo per le piattaforme di cui al punto precedente, con particolare riferimento ad algoritmi di computational photography.
Conoscenza di concetti e costrutti comuni a linguaggi di programmazione ad oggetti come Java e C++.
Abilità di progettare e sviluppare software applicativo su piattaforme software embedded complesse.
Abilità di lavorare in gruppo. |
Modalita' di esame:
|
L'esame prevede un progetto di programmazione e una prova orale.
Il progetto verifica l'avvenuta acquisizione delle abilità di progettazione e lavoro in gruppo: per questa ragione, ciascun progetto deve essere affrontato da un gruppo di studenti (tipicamente 3 studenti). Il progetto è completato quando il codice sorgente del progetto e un report che illustra il lavoro svolto sono stati consegnati al docente e discussi con esito positivo in una delle date stabilite durante le sessioni d'esame.
La prova orale verifica l'avvenuta acquisizione delle conoscenze sui linguaggi di programmazione, sulle piattaforme software e sugli algoritmi. La prova orale è individuale e verte su tutte le nozioni presentate a lezione. È possibile sostenere la prova orale solo dopo il completamento del progetto.
L'insegnamento è a numero programmato: per poter sostenere progetto e prova orale è necessario iscriversi all'insegnamento con le modalità che saranno comunicate a settembre 2018 tramite elearning.dei.unipd.it, e ottenere un posto utile in graduatoria. |
Criteri di valutazione:
|
La valutazione finale è una media ponderata dei punteggi, espressi in trentesimi, conseguiti nel progetto (peso: 60%) e nella prova orale individuale (peso: 40%). Inoltre, il voto del progetto e della prova orale devono essere entrambi maggiori o uguali a 18/30.
I seguenti aspetti saranno presi in considerazione nella valutazione del software del progetto: mancanza di bug e glitch, facilità d'uso, rispetto delle specifiche della piattaforma software, qualità del codice sorgente (modularità, uso di costrutti appropriati del linguaggio di programmazione, generosa presenza di commenti).
I seguenti aspetti saranno presi in considerazione nella valutazione del report di progetto: chiarezza, completezza, capacità di sintesi (il report deve essere completo senza essere prolisso o costellato di dettagli banali), qualità della bibliografia, corrispondenza tra le informazioni illustrate nel report e le informazioni esemplificate nel codice sorgente.
I seguenti aspetti saranno presi in considerazione nella valutazione della prova orale: chiarezza espositiva, grado di conoscenza raggiunto, capacità di effettuare deduzioni e collegamenti a partire dalle nozioni presentate in classe. |
Contenuti:
|
PIATTAFORME. Il concetto di piattaforma software. Architettura di una piattaforma. Architettura di un’applicazione. Stati e transizioni di stato nella vita di un'applicazione. Interfaccia utente; gesti. Risposta agli eventi. Salvataggio dello stato e memorizzazione dati in memoria persistente. Accesso all’hardware e ai sensori. Gestione di dati multimediali. Security model.
PROGETTAZIONE DI SOFTWARE. Design pattern. Architetture software per sistemi concorrenti e distribuiti (cenni). Principi di interfacce uomo-macchina.
SVILUPPO DI SOFTWARE. Concetti condivisi dai principali linguaggi orientati agli oggetti. Linguaggi di programmazione a confronto: C, C++, Java, Kotlin (cenni). Bytecode e codice macchina.
ALGORITMI. Pipeline di acquisizione ed elaborazione numerica delle immagini all'interno di una fotocamera digitale. Algoritmi di computational photography per superare i limiti fisici del sistema di acquisizione delle immagini stesse (esempio: acquisizione high dynamic range). |
Attivita' di apprendimento previste e metodologie di insegnamento:
|
Lezioni in aula con il supporto di slide. Esercitazioni in laboratorio al calcolatore. |
Eventuali indicazioni sui materiali di studio:
|
I materiali di studio includono informazioni estratte dai testi di riferimento, slide, libri, articoli scientifici, link a documenti e risorse disponibili in rete. Tutti i materiali di studio sono in lingua inglese.
I materiali di studio che non si trovano nei testi di riferimento sono accessibili tramite elearning.dei.unipd.it e tramite www.dei.unipd.it/~fantozzi/esp1819/. |
Testi di riferimento: |
-
Bill Phillips, Chris Stewart, Brian Hardy, Kristin Marsicano, Android Programming: the Big Nerd Ranch Guide (3rd Edition). Atlanta: GA, Big Nerd Ranch, 2017. ISBN-10: 0134706056
-
Richard Szeliski, Computer Vision: Algorithms and Applications. New York: Springer, 2011. ISBN-10: 1848829345
-
Erik Reinhard, Wolfgang Heidrich, Paul Debevec, Sumanta Pattanaik, Greg Ward, Karol Myszkowski, High Dynamic Range Imaging (2nd Edition). Burlington: Morgan Kaufmann, 2010. ISBN-10: 012374914X
-
Rastislav Lukac, Computational Photography: Methods and Applications. Boca Raton: CRC Press, 2010. ISBN-10: 1439817499
|
Didattica innovativa: Strategie di insegnamento e apprendimento previste
- Lecturing
- Laboratory
- Working in group
- Files e pagine caricati online (pagine web, Moodle, ...)
Didattica innovativa: Software o applicazioni utilizzati
- Moodle (files, quiz, workshop, ...)
- Android Studio, Git
Obiettivi Agenda 2030 per lo sviluppo sostenibile
|
|