First cycle
degree courses
Second cycle
degree courses
Single cycle
degree courses
School of Engineering
Course unit
INP9086625, A.A. 2019/20

Information concerning the students who enrolled in A.Y. 2019/20

Information on the course unit
Degree course Second cycle degree in
IN2371, Degree course structure A.Y. 2019/20, A.Y. 2019/20
bring this page
with you
Degree course track INTERNATIONAL MOBILITY [005PD]
Number of ECTS credits allocated 6.0
Type of assessment Mark
Course unit English denomination PROGRAMMING FOR TELECOMMUNICATIONS (MOD. B)
Department of reference Department of Information Engineering
Mandatory attendance No
Language of instruction English

Teacher in charge MICHELE POLESE ING-INF/03
Other lecturers FILIPPO CAMPAGNARO 000000000000

Integrated course for this unit
Course unit code Course unit name Teacher in charge

Course unit code Course unit name Teacher in charge Degree course code

ECTS: details
Type Scientific-Disciplinary Sector Credits allocated
Educational activities in elective or integrative disciplines ING-INF/05 Data Processing Systems 6.0

Course unit organization
Period First semester
Year 1st Year
Teaching method frontal

Type of hours Credits Teaching
Hours of
Individual study
Lecture 6.0 48 102.0 No turn

Start of activities 30/09/2019
End of activities 18/01/2020
Show course schedule 2019/20 Reg.2019 course timetable

Examination board
Examination board not defined


Common characteristics of the Integrated Course unit

Prerequisites: MODULO A
The student should have a good knowledge of basic probability theory, including random processes, random variables, their expectation, the concept of conditional probability the main probability density functions, etc. Note that no previous courses are deemed mandatory, as the instructor will go through the needed preliminary theory and/or the description of the related networking mechanisms prior to the presentation of each new topic.

Nevertheless, some basic knowledge on computer networks, including their basic tools for performance analysis (queueing theory) and some knowledge on networking protocols (in particular link layer and transport) is beneficial. Hence, the prospective student may want to attend:


Previous exposure to Matlab, Java, C or to scripting languages such as Linux bash, HTML, CSS, etc., is helpful but not required.
Target skills and knowledge: MODULO A
1. Provide some advanced knowledge on protocol stacks for wireless communications, including the analysis of distributed wireless networks, state of the art wireless technologies and current trends.
2. The student will become knowledgeable about modern centralized and distributed wireless systems, with focus on IEEE 802.11 (a/g/n/h/ac).
3. The student will become knowledgeable about protocol stacks for wireless communications, including: 3.1) physical layer (PHY) designs, 3.2) link layer protocols (ARQ and hybrid ARQ), 3.3) routing algorithms (NET) and 3.4) TCP based flow control.
4. The student will acquire the ability to analyze wireless communication scenarios, and characterize the performance of selected network protocols for a correct system design. Also, she/he will be able to analyze a wireless networking solution through simulation and modify the protocol rules so as to enhance the system performance.

1. Solid knowledge about data structures, syntax, flow control statements and basic libraries of C and C++ programming languages
2. Solid knowledge of C++ object oriented programming
3. Knowledge of advanced programming concepts, such as, multi-trading, concurrent programming, smart-pointers, TCP socket programming, and compiling tools
4. Ability to Implement communication systems based on the TCP/IP technology

The knowledge acquired from the two MODULES A and B will allow the student to 1) write network simulators targeting complex network scenarios. Likewise, she/he will gain a system-level view of communication systems, developing the sensibility needed to modify channel access, routing and transport protocols, towards improving their performance. 2) In addition, the student will be able to implement communication solutions based on the TCP/IP protocol suite.
Examination methods: The overall exam will entail two main steps: 1) a written examination dealing with dimensioning a communication system and providing answers to theoretical questions (MODULO A), 2) the development of a practical project, entailing the implementation of a selected communication solution in the C++ language (MODULO B).

The assessment for "MODULO A" will be based on a written exam, consisting of two parts:

Part 1: the first part contains one exercise about dimensioning a wireless networking system, involving the transmission of some data flow through a network of terminals, where some of the links are wireless.
Part 2: the second part contains some theoretical questions, that cover some of the derivations (formulas, proofs, etc.) that are presented during the course.

The assessment for module B will be based on a written exam (with short open questions on the theoretical aspects of the course) and on a computer-based exam, where the students will have to complete the development of some parts of a C++ codebase.
Assessment criteria: MODULO A
The written exam will be formulated so as to assess the following abilities:

For Part 1:
1. Ability of understanding a communication network from a system level perspective, breaking the technical scenario down into smaller pieces, solving each one according to the technical and methematical dependencies among them, and merging the obtained results to obtain global performance estimates.
2. Competence and coherence in the discussion of the performance so obtained.
3. Correctness of approach and of the numerical results.

For Part 2:
1. Knowledge of the wireless systems presented in the course.
2. Knowing how to derive the key equations and proofs regarding the physical, link and networking layers studied in the course.
3. Capacity and competence in the explanation of the performance tradeoffs of the presented systems.

Part 1: knowledge of the topics of the course, correctness and coherence of the answers.
Part 2: correctness of the implementation, quality of the developed code.

Specific characteristics of the Module

Course unit contents: Part I - Basics
• Structuring and handling a project with GitLab.
• Syntax of C: operators, expressions, control flow and conditional statements (e.g., while, for, switch-case, if-else).
• Data types (constants, variables, reference, pointers).
• Structuring code: functions, main, arguments.
• Array and pointers, dynamic memory allocation, struct.
• Object Oriented Programming (OOP) Paradigms, C++.
• Classes: constructor, default constructor, copy constructor, destructor.
• Operator overloading.
• Derived classes / class hierarchies.
• Template.
• The standard library: containers, algorithms, iterators, memory and resources, strings, regular expressions, I/O operators, numerics.

Part II – Advanced programming and hands-on projects
• gcc/g++, autotools and compiling in the Linux OS.
• C++11: use of smartpointer in place of raw pointer.
• Multithreading and concurrent programming.
• Socket programming in C/C++: socket, socketopt, bind, listen/accept/connect, send/receive.
• Linux command line tools to test connectivity & socket functionality: ping, netcat, socat, etc.
• Hands-on projects:
• Bi-directional chat.
• Simulation/emulation of wireless communication channels.
• UDP file transfer between PCs, through an emulated wireless channel.
• TCP file transfer between PCs: performance analysis of different TCP flavors (throughput, delay).
Textbooks (and optional supplementary readings)
  • 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. Cerca nel catalogo
  • 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