Corsi di Laurea Corsi di Laurea Magistrale Corsi di Laurea Magistrale
a Ciclo Unico
Scuola di Ingegneria
INGEGNERIA INFORMATICA
Insegnamento
PROGRAMMAZIONE DI SISTEMI EMBEDDED
IN01122661, A.A. 2018/19

Informazioni valide per gli studenti immatricolati nell'A.A. 2016/17

Principali informazioni sull'insegnamento
Corso di studio Corso di laurea in
INGEGNERIA INFORMATICA
IN0508, ordinamento 2011/12, A.A. 2018/19
N0
porta questa
pagina con te
Curriculum Percorso Comune
Crediti formativi 9.0
Tipo di valutazione Voto
Denominazione inglese EMBEDDED SYSTEMS PROGRAMMING
Dipartimento di riferimento Dipartimento di Ingegneria dell'Informazione (DEI)
Sito E-Learning https://elearning.dei.unipd.it/course/view.php?idnumber=2018-IN0508-000ZZ-2016-IN01122661-N0
Obbligo di frequenza No
Lingua di erogazione ITALIANO
Sede PADOVA
Corso singolo È possibile iscriversi all'insegnamento come corso singolo
Corso a libera scelta È possibile utilizzare l'insegnamento come corso a libera scelta

Docenti
Responsabile CARLO FANTOZZI ING-INF/05

Mutuazioni
Codice Insegnamento Responsabile Corso di studio
IN01122661 PROGRAMMAZIONE DI SISTEMI EMBEDDED CARLO FANTOZZI IN0507
IN01122661 PROGRAMMAZIONE DI SISTEMI EMBEDDED CARLO FANTOZZI IN0521

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 III Anno
Modalità di erogazione frontale

Tipo ore Crediti Ore di
didattica
assistita
Ore Studio
Individuale
LEZIONE 9.0 72 153.0

Calendario
Inizio attività didattiche 25/02/2019
Fine attività didattiche 14/06/2019
Visualizza il calendario delle lezioni Lezioni 2018/19 Ord.2011

Commissioni d'esame
Commissione Dal Al Membri
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)

Syllabus
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 Cerca nel catalogo
  • Richard Szeliski, Computer Vision: Algorithms and Applications. New York: Springer, 2011. ISBN-10: 1848829345 Cerca nel catalogo
  • 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 Cerca nel catalogo
  • Rastislav Lukac, Computational Photography: Methods and Applications. Boca Raton: CRC Press, 2010. ISBN-10: 1439817499 Cerca nel catalogo

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
Lavoro dignitoso e crescita economica