73119 - SOFTWARE PER LE TELECOMUNICAZIONI E LABORATORIO T-1

Scheda insegnamento

SDGs

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.

Imprese innovazione e infrastrutture

Anno Accademico 2020/2021

Conoscenze e abilità da conseguire

Al termine del corso lo studente è introdotto ai concetti fondamentali per la realizzazione di piattaforme di servizi e applicazioni di telecomunicazioni. Conosce i servizi per terminali fissi e mobili, i servizi di broadcasting e streaming, i servizi basati su interfacce web. È introdotto allo sviluppo di applicazioni software per la realizzazione pratica dei servizi trattati nel Corso di Software per le telecomunicazioni.

Contenuti

Il corso ha l'obiettivo di introdurre i concetti base dell'utilizzo del software nelle telecomunicazioni. Si considereranno sia gli aspetti di modellizzazione dei sistemi di telecomunicazioni per la loro simulazione al computer e che di programmazione orientata allo sviluppo di servizi e applicazioni per le telecomunicazioni.

Il corso di "Software per le Telecomunicazioni e Laboratorio" è costituito da tre moduli che vengono erogati in parallelo.

Il Modulo 1 è impartito dal Prof. Alessandro Vanelli Coralli. Matlab è la piattaforma di sviluppo software utilizzata per modellare il funzionamento dei sistemi di telecomunicazioni. Il Modulo 1 è organizzato nel seguente modo:

  1. Introduzione a Matlab
  2. Script e funzioni Matlab
  3. Array e indicizzazione
  4. La simulazione numerica su Matlab
  5. Control flow in Matlab
  6. Data Type avanzati
  7. Import/Export in Matlab
  8. Debugging in Matlab
  9. Applicazione ai sistemi di Telecomunicazioni in sinergia con l’insegnamento di Fondamenti di Telecomunicazioni
  10. Applicazione a Machine Learning e Reti Neurali

I Moduli 2 e 3, impartiti dal Prof. Daniele Tarchi, sono organizzati come un modulo unico orientato all'introduzione dell'utilizzo dei linguaggi di programmazione per l'implementazione e lo sviluppo dei servizi di telecomunicazioni. Java è il linguaggio di programmazione utilizzato, mentre Android è il sistema operativo di riferimento per lo sviluppo delle applicazioni.

I moduli 2 e 3 sono organizzati in tre parti.

Parte 1: Introduzione al corso e a Java (20 ore)

  • Introduzione al corso. Il software nelle Telecomunicazioni. I Sistemi operativi mobili.
  • Ambiente di Sviluppo. 
  • Introduzione a Java
  • Gli operatori Java.
  • Selezioni e iterazioni in Java.
  • I metodi in Java. Gli array in Java.
  • Classi e oggetti in Java.
  • Le eccezioni in Java

Parte 2: Introduzione ad Android e allo sviluppo delle app (20 ore)

  • L'ambiente di Sviluppo: Android Studio; Installazione; Hello World App. Il sito Android Developer. Gli esempi su Android Developer.
  • Multi-screen Apps: Le Activity e il flusso di navigazione; Le Risorse in Android: Risorse statiche; Utilizzo delle risorse a run time
  • Esercitazione sulla creazione di una app base
  • Gli intent espliciti; Esercitazione sulla creazione di una app multi-schermo
  • La User Interface: View e Layout; Esercitazione sulla creazione della User Interface
  • Gli intent Impliciti. Esercitazione sulla creazione di una app che sfrutta i servizi di sistema Android
  • Gestione della persistenza: Salvataggio delle preferenze; Esercitazione sul salvataggio delle preferenze.
  • Gestione della persistenza: Salvataggio dei dati. Esercitazione sul salvataggio dei dati

Parte 3: Le applicazioni di rete e loro implementazione su Java e Android (20 ore)

  • Le telecomunicazioni e le applicazioni. I paradigmi di comunicazione (Client/Server, Peer-to-Peer). Cenni ai protocolli.
  • Il protocollo HTTP
  • I linguaggi HTML e XML. Cenni a HTML5.
  • Le librerie Java I/O e Java Net
  • Implementazione di Socket di rete
  • Accesso al Web in Android; download di immagini.
  • I sensori in Android: Gestione dei sensori diretti; I sensori indiretti. Esercitazione sulla gestione dei sensori.

Testi/Bibliografia

Le slide delle lezioni saranno rese disponibili su IOL.

Testi di consultazione per i moduli 2 e 3:

  • Quentin Charatan, Aaron Kans, "Java in Two Semesters - Featuring JavaFX", Fourth Edition, Springer Nature Switzerland, 2019
  • Massimo Carli, “Android 9 – Guida per lo sviluppo di applicazioni mobili”, Apogeo, 2019
  • Michael Burton, "Android App Development For Dummies", 3rd Edition, Wiley, 2016
  • Behrouz A. Forouzan, Firouz Mosharraf, "Reti di Calcolatori - un approccio Top-Down", McGraw Hill, 2013
  • James F. Kurose, Keith W. Ross "Reti di calcolatori e internet - Un approccio top-down", 7th Edition, Pearson, 2017

Guida di riferimento per lo sviluppo Android:

  • http://developer.android.com

Metodi didattici

Lezioni frontali e pratiche per l'implementazione delle nozioni impartite a lezione.

Modalità di verifica e valutazione dell'apprendimento

La verifica dell'apprendimento verrà svolta attraverso un esame scritto a cui seguirà la discussione dell'elaborato e del progetto sviluppato.

L'esame scritto sarà volto alla verifica dell'apprendimento delle nozioni teoriche impartite nei moduli due e tre.

La verifica del primo modulo sarà effettuata attraverso una relazione sugli esercizi assegnati in itinere, mentre la verifica del progetto sviluppato verrà effettuata attraverso la presentazione di una app Android funzionante.

All'inizio del corso gli studenti verranno organizzati in gruppi di due/tre componenti ai quali sarà assegnato un progetto di app Android che dovranno sviluppare. E' fatta salva la possibilità agli studenti di proporre un progetto di app da concordare con il docente.

All'esame gli studenti dovranno fare una breve presentazione (circa 5 minuti) della propria app utilizzando un approccio Elevator Pitch, per illustrare obiettivo, architettura, maggiori complessità e sfide future del progetto sviluppato.  Seguirà un colloquio individuale in cui ogni studente dovrà illustrare la porzione di codice sviluppata.

Strumenti a supporto della didattica

PC Windows/Linux/MacOS per l'installazione degli applicativi di sviluppo

Orario di ricevimento

Consulta il sito web di Daniele Tarchi

Consulta il sito web di Alessandro Vanelli Coralli