72775 - PROGRAMMAZIONE DI SISTEMI EMBEDDED

Anno Accademico 2016/2017

  • Docente: Alessandro Ricci
  • Crediti formativi: 6
  • SSD: ING-INF/05
  • Lingua di insegnamento: Italiano
  • Modalità didattica: Convenzionale - Lezioni in presenza
  • Campus: Cesena
  • Corso: Laurea in Ingegneria e scienze informatiche (cod. 8615)

Conoscenze e abilità da conseguire

Al termine del corso lo studente possiede competenze di base di carattere teorico e pratico relativamente ai principi e le tecniche di progettazione e sviluppo di programmi per sistemi embedded (in letteratura: "embedded software"). Questa tipologia di programmi e sistemi software ha come elemento chiave l'interazione con il mondo fisico, per cui aspetti relativi al tempo, la concorrenza, la reattività, la robustezza rispetto ai guasti, la comunicazione sincrona/asincrona, la gestione ottimizzata di risorse sono strettamente integrati con l'aspetto di pura elaborazione dell'informazione. Lo studente conosce inoltre gli elementi essenziali della progettazione e programmazione di questi tipi di sistemi software adottando o metodi, paradigmi e tecnologie più moderni.

Contenuti

- Introduzione ai sistemi embedded e Internet of Things (IoT)
-- caratteristiche, tipologie, architetture e tecnologie hardware, applicazioni di riferimento
-- introduzione agli aspetti elettronici di base, alla sensoristica e ai sistemi di attuazione

- Tecniche di programmazione di sistemi embedded
-- modelli a loop di controllo
-- modelli a macchine a stati finiti sincrone e asincrone
-- modelli a task e ad eventi
-- supporti e tecniche basate su Sistemi Operativi Embedded e Real-Time

- Reti di sistemi embedded/M2M e IoT
-- modelli, architetture, protocolli di comunicazione per reti di dispositivi
-- modelli a scambio di messaggi asincrono ed attori
-- integrazione con sistemi mobile
-- framework/middleware di programmazione di alto livello e servizi Cloud

In laboratorio:
- Arduino UNO come piattaforma a micro-controllore
-- introduzione al linguaggio C++, utilizzato per implementare i programmi su Arduino
- RaspberryPi come piattaforma a micro-processore
-- Linux Kernel come sistema operativo di riferimento
-- Java come linguaggio di programmazione di alto livello
- Android come piattaforma mobile per sistemi IoT

Testi/Bibliografia

- An Embedded Software Primer (David E. Simon) - Addison Wesley
- Computers as Components (Wolf) - Morgan Kaufman
- Making Embedded Systems (E. White) - O'Reilly
- Building Internet of Things with The Arduino (C. Doukas) 
- Designing the Internet of Things (McEwen & Cassimally) - Wiley

Metodi didattici

Dei sei crediti del corso, tre crediti circa sono dedicati alla teoria e tre alla pratica in laboratorio.

Modalità di verifica e valutazione dell'apprendimento

L'esame finale prevede lo sviluppo di un progetto in gruppo e un colloquio orale.

Strumenti a supporto della didattica

Durante le lezioni verranno proiettati lucidi, disponibili  sul sito ufficiale del corso. A supporto delle attività pratiche, verrà utilizzato il laboratorio di informatica ove gli studenti troveranno gli strumenti necessari per svolgere le esercitazioni - a partire da kit con Arduino e Raspberry Pi.

Link ad altre eventuali informazioni

https://elearning-cds.unibo.it/course/view.php?id=5286

Orario di ricevimento

Consulta il sito web di Alessandro Ricci