Corsi di Laurea Corsi di Laurea Magistrale Corsi di Laurea Magistrale
a Ciclo Unico
Scuola di Ingegneria
ICT FOR INTERNET AND MULTIMEDIA - INGEGNERIA PER LE COMUNICAZIONI MULTIMEDIALI E INTERNET
Insegnamento
PROGRAMMING FOR TELECOMMUNICATIONS (MOD. B)
INP9086625, A.A. 2019/20

Informazioni valide per gli studenti immatricolati nell'A.A. 2019/20

Principali informazioni sull'insegnamento
Corso di studio Corso di laurea magistrale in
ICT FOR INTERNET AND MULTIMEDIA - INGEGNERIA PER LE COMUNICAZIONI MULTIMEDIALI E INTERNET (Ord. 2019)
IN2371, ordinamento 2019/20, A.A. 2019/20
N0
porta questa
pagina con te
Curriculum TELECOMMUNICATIONS [001PD]
Crediti formativi 6.0
Tipo di valutazione Voto
Denominazione inglese PROGRAMMING FOR TELECOMMUNICATIONS (MOD. B)
Dipartimento di riferimento Dipartimento di Ingegneria dell'Informazione (DEI)
Sito E-Learning https://elearning.dei.unipd.it/course/view.php?idnumber=2019-IN2371-001PD-2019-INP9086625-N0
Obbligo di frequenza No
Lingua di erogazione INGLESE
Sede PADOVA

Docenti
Nessun docente assegnato all'insegnamento

Corso integrato di appartenenza
Codice Insegnamento Responsabile
INP9086624 TELECOMMUNICATION PRINCIPLES (I.C.) MICHELE ROSSI

Mutuazioni
Codice Insegnamento Responsabile Corso di studio
INP9086878 PROGRAMMING FOR TELECOMMUNICATIONS -- IN2371
INP9086625 PROGRAMMING FOR TELECOMMUNICATIONS (MOD. B) -- IN2371

Dettaglio crediti formativi
Tipologia Ambito Disciplinare Settore Scientifico-Disciplinare Crediti
AFFINE/INTEGRATIVA Attività formative affini o integrative ING-INF/05 6.0

Organizzazione dell'insegnamento
Periodo di erogazione Primo semestre
Anno di corso I Anno
Modalità di erogazione frontale

Tipo ore Crediti Ore di
didattica
assistita
Ore Studio
Individuale
LEZIONE 6.0 48 102.0

Calendario
Inizio attività didattiche 30/09/2019
Fine attività didattiche 18/01/2020
Visualizza il calendario delle lezioni Lezioni 2019/20 Ord.2019

Syllabus

Caratteristiche comuni al Corso Integrato

Prerequisiti: MODULO A
Allo studente è richiesta una conoscenza di base inerentemente alla teoria della probabilità, ai processi e alle variabili aleatorie, la loro aspettazione statistica, la probabilità condizionata, e varie distribuzioni standard sia continue che discrete, etc.

In aggiunta, una conoscenza di base delle reti di comunicazione, degli strumenti fondamentali per la valutazione delle loro prestazioni (es. teoria delle code) e dei principi di funzionamento dei principali protocolli di comunicazione (in particolare di livello di collegamento e trasporto) è altresì suggerita. Lo studente volenteroso è motivato a seguire i seguenti corsi:

TELECOMUNICAZIONI
TELECOMMUNICATION NETWORKS - RETI DI TELECOMUNICAZIONI

Tuttavia, per il presente corso, non vi sono propedeuticità espressamente richieste. Infatti, il docente, all'inizio di ogni argomento, tratterà le basi matematiche necessarie alla sua corretta comprensione e/o introdurrà i meccanismi di rete necessari alla corretta comprensione delle lezioni.

MODULO B
Esperienza di programmazione con i linguaggi Matlab, Java, C o con linguaggi di script come Linux Bash, HTML, CSS, etc. è utile ma non espressamente richiesta.
Conoscenze e abilita' da acquisire: MODULO A
1. Fornire allo studente delle valide e aggiornate conoscenze in merito ai protocolli di comunicazione utilizzati in reti wireless.
2. Lo studente acquisirà conoscenze sui protocolli e le tecnologie di comunicazione di reti radio centralizzate e distribuite con particolare riferimento allo standard IEEE 802.11 (a/g/h/n/ac).
3. Lo studente apprenderà i principi di funzionamento delle pile protocollari con riferimento a:
3.1) tecnologia di livello fisico, 3.2) protocolli di link layer (ARQ e ARQ ibrido), 3.3) algoritmi per l'instradamento dell'informazione (routing), 3.4) algoritmi per il controllo del flusso (TCP).
4. Lo studente acquisirà la capacità di analizzare scenari di rete in presenza di collegamenti radio, calcolare le prestazioni di protocolli di rete in tali scenari e dimensionare l'intero sistema di trasmissione, partendo dal livello fisico fino al livello di trasporto.

MODULO B
1. Conoscenza approfondita delle strutture dati, della sintassi, dei metodi per il controllo di flusso e delle librerie di base dei linguaggi C e C++
2. Conoscenze di programmazione orientata agli oggetti in C++
3. Conoscenza di metodi di programmazione avanzata: programmazione concorrente, multi-treading e concorrente, smart-pointers, programmazione TCP socket, tool per la compilazione
4. Acquisizione della capacità di implementare sistemi di comunicazione basati su tecnologia TCP/IP

MODULO A + MODULO B
Le conoscenze acquisite permetteranno allo studente di 1) progettare simulatori di reti di comunicazioni, per la caratterizzazione di scenari complessi, acquisendo una visione di sistema e sviluppando la sensibilità necessaria per modificare i protocolli di accesso al mezzo, instradamento e trasporto, al fine di migliorarne le prestazioni e inoltre di 2) implementare algoritmi di comunicazione in ambiente wireless utilizzando la suite protocollare TCP/IP.
Modalita' di esame: Il superamento dell'esame prevede: 1) il superamento di un esame scritto contenente un esercizio di dimensionamento di un sistema di trasmissione e domande teoriche (MODULO A), 2) la realizzazione di un progetto pratico, orientato all'implementazione di un sistema di comunicazione in linguaggio C++ (MODULO B).

MODULO A
L'accertamento del profitto per il MODULO A consiste nel superamento di una prova scritta, divisa in due parti.

Parte 1: soluzione di un problema tecnico, dato uno scenario di trasmissione che coinvolga l'interazione di diversi nodi, tipicamente inerente al calcolo delle prestazioni end-to-end dello scenario proposto in presenza di canali radio e canali cablati.
Parte 2: la seconda parte conterrà domande teoriche, attinte dagli argomenti trattati in seno al corso.

NOTA: Il docente risolverà numerosi esercizi durante le lezioni di esercitazione (per un minimo di 12 ore).

MODULO B
Realizzazione di un progetto di carattere implementativo che verterà sull'utilizzo della suite protocollare TCP/IP, nonchè sulla misura e l'analisi delle prestazioni ottenute. Il progetto verrà presentato per via orale, in stile conferenza, ai docenti del corso.
Criteri di valutazione: MODULO A
L'esame scritto verrà valutato secondo i seguenti criteri:

Per la Parte 1:
1. Capacità di concepire una rete di comunicazione secondo una prospettiva di sistema, scomponendo lo scenario tecnico in sottoparti, risolvendo ogni sottoparte nell'ordine dettato dalle dipendenze tecniche e matematiche derivanti dall'interazione delle stesse e, infine, combinando i risultati ottenuti.
2. Competenza e coerenza nella discussione dei risultati ottenuti.
3. Correttezza dell'approccio utilizzato e dei risultati numerici.

Per la Parte 2:
1. Conoscenza dei sistemi radio trattati nel corso.
2. Capacità di derivare correttamente le equazioni e le dimostrazioni chiave dei livelli fisico, di accesso e di rete trattati nel corso.
3. Correttezza e competenza nella spiegazione delle prestazioni dei sistemi trattati.

MODULO B
1. livello di difficoltà dell'attività implementativa affrontata nel progetto.
2. l'architettura scelta per la realizzazione del codice e gli strumenti di programmazione utilizzati.
3. le prestazioni del protocollo di comunicazione implementato.
4. la capacità e la chiarezza espositiva in fase di presentazione del progetto.

Caratteristiche proprie del modulo

Contenuti: Parte I – Nozioni di base
• Gestione e organizzazione di progetti in ambiente GitLab.
• La sintassi del C: operatori, espressioni, controllo del flusso e espressioni condizionali (es., while, for, switch-case, if-else).
• Tipi di dati (costanti, variabili, referenze, puntatori).
• Strutturare il codice: funzioni, programma principale “main”, argomenti.
• Vettori e puntatori, allocazione dinamica della memoria, strutture (“struct”).
• Programmazione orientata agli oggetti, C++.
• Classi: costruttore, costruttore di default, costruttore di copia, distruttore.
• “Overloading” degli operatori.
• Classi derivate / gerarchie di classi.
• Template.
• La libreria standard: contenitori “containers”, algoritmi, iteratori, memoria e risorse, stringhe, espressioni regolari, operatori di I/O, calcolo numerico.

Parte II – Programmazione avanzata e progetti di laboratorio
• gcc/g++, autotools e compilazione nel sistema operativo Linux.
• C++11: utilizzo di puntatori “smart” al posto di operatori “raw”.
• Multithreading e programmazione concorrente.
• Programmazione “socket” in C/C++: socket, socketopt, bind, listen/accept/connect, send/receive.
• Programmi Linux a linea di comando per la verifica della connettività e il corretto funzionamento delle “socket”: ping, netcat, socat, etc.
• Progetti di laboratorio:
• Chat bi-direzionale.
• Simulazione/emulazione di canali di comunicazione radio.
• Trasferimento di dati tra due computer con il protocollo UDP: analisi delle prestazioni in presenza di un canale radio emulato.
• Trasferimento di dati tra computer con il protocollo TCP: analisi delle prestazioni di diverse versioni del TCP (throughput, ritardo).
Attivita' di apprendimento previste e metodologie di insegnamento:
Eventuali indicazioni sui materiali di studio:
Testi di riferimento:
  • Brian W. Kernighan, Dennis M. Ritchie, C Programming Language. --: 2nd Edition, Prentice Hall, 1988. Cerca nel catalogo
  • Bjarne Stroustrup, The C++ Programming Language. --: Addison-Wesley Professional, 2013. Cerca nel catalogo
  • William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery, Numerical Recipes in C++. --: Cambridge University Press, 2nd Edition, 2002. Cerca nel catalogo
  • Anthony Williams, C++ Concurrency in Action. --: 2nd Edition, Manning Publications, 2019.
  • Scott Meyers, Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14. --: O'Reilly Media, 2014. Cerca nel catalogo