Corsi di Laurea Corsi di Laurea Magistrale Corsi di Laurea Magistrale
a Ciclo Unico
Scuola di Ingegneria
INGEGNERIA ELETTRONICA
Insegnamento
PROGRAMMAZIONE DI SISTEMI EMBEDDED
IN01122661, A.A. 2019/20

Informazioni valide per gli studenti immatricolati nell'A.A. 2017/18

Principali informazioni sull'insegnamento
Corso di studio Corso di laurea in
INGEGNERIA ELETTRONICA
IN0507, ordinamento 2011/12, A.A. 2019/20
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)
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

Mutuante
Codice Insegnamento Responsabile Corso di studio
IN01122661 PROGRAMMAZIONE DI SISTEMI EMBEDDED CARLO FANTOZZI IN0508

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 02/03/2020
Fine attività didattiche 12/06/2020
Visualizza il calendario delle lezioni Lezioni 2019/20 Ord.2011

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 orientata agli 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 hardware e software comuni alle moderne piattaforme software per dispositivi mobili, quali Android e iOS. Conoscenza dei dettagli dell'architettura software della piattaforma Android.
Conoscenza di concetti e costrutti comuni a linguaggi di programmazione ad oggetti come Java, Kotlin e C++.
Abilità di progettare e sviluppare software applicativo su piattaforme software 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. La prova orale può essere svolta in un appello successivo a quello in cui viene presentato il progetto, ma non oltre l'appello di febbraio 2021.
L'insegnamento è a numero programmato: per poter sostenere progetto e prova orale è necessario iscriversi all'insegnamento con le modalità che saranno comunicate a settembre 2019 tramite elearning.dei.unipd.it, e ottenere un posto utile in graduatoria.
Criteri di valutazione: La valutazione finale è una media ponderata dei voti, espressi in trentesimi, assegnati al progetto (peso: 60%) e alla prova orale individuale (peso: 40%). Inoltre, il voto del progetto e della prova orale devono essere entrambi maggiori o uguali a 18/30. Il voto del progetto è uguale per tutti i membri del gruppo che l'ha presentato.
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: Definizioni di sistema embedded e di dispositivo mobile.
Piattaforme software per dispositivi mobili: architettura della piattaforma e delle applicazioni. 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. Security model.
Periferiche nei dispositivi mobili: sensori; fotocamera e microfono; GPS e servizi di localizzazione; NFC e Bluetooth LE (cenni). Accesso alle periferiche. Gestione della batteria. Gestione di dati multimediali, con particolare riferimento alle immagini.
Progettazione di software per dispositivi mobili: principi di interfacce uomo-macchina; design pattern; architetture software per sistemi concorrenti (cenni).
Sviluppo di software per dispositivi mobili. Linguaggi di programmazione imperativi a confronto: C, C++, Java, Kotlin. Late binding, reflection e type introspection nella programmazione orientata agli oggetti. Programmazione a eventi. Uso di linguaggi dichiarativi per lo sviluppo dell'interfaccia utente.
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.
Testi di riferimento:
  • Bill Phillips, Chris Stewart, Brian Hardy, Kristin Marsicano, Android Programming: the Big Nerd Ranch Guide (4th Edition). Atlanta: GA, Big Nerd Ranch, 2019. ISBN-10: 0135245125 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