28024 - Computer Networks T (A-K)

Course Unit Page


This teaching activity contributes to the achievement of the Sustainable Development Goals of the UN 2030 Agenda.

Quality education Gender equality Industry, innovation and infrastructure Sustainable cities

Academic Year 2021/2022

Learning outcomes

This course faces most issues related with network and distributed systems, by examining most common solutions: the goal is to acquire a first knowledge of the solution policies, of typical problems, and good exposure to tools and widespread strategies.
The knowledge objective is to understand which are the typical environments on which to apply some basic solutions and the requirements.

The main ability is to be capable of proposing a solution to small typical distributed problems with some time frame with the most common tools.

Students are assumed to have a good starting knowledge of the basics of operating systems and related tools, both for WinXX and UNIX technologies.
In other words, we assume a good knowledge derived from a first course on Operating Systems, apart from some capacities in C and Java.

Course contents

The course is organized around the Client /Server model and how to design small applications.

1. Generalities and Basics Understanding

  • Some basic perspectives and general definitions
  • Decentralized and heterogeneous distributed systems
  • Assessment of standards and their meaning

Some basic models are presented:

  • client/server interaction
  • shared memory and message exchange
  • connection models, interaction models, etc.

2. Standard environments

ISO OSI layered organization

  • network and transport layer
  • application layers: session, presentation, & application

Presentation of some standard applications.

3. TCP/IP protocols

Suite TCP/IP protocols: network and transport layer
Common applications:

  • synchronous services: remote virtual terminal, file transfer,
  • asynchronous services: mail, news, etc.

Some widely spread tools for Unix and WinXX.

4. Some reference tools

At the communication level, we work on sockets as a standard tool, independent from the programming environment; at the application level, we present and work on Client/server tools.

Socket and related API for C (UNIX) and Java
Case studies for interactions client/server in Unix systems with TCP/IP protocols.

The client/server application cases are:

  • Remote Procedure Call RPC of SUN
  • RMI, remote operations in Java

5. Distributed Operating Systems and tools

Distributed Operating Systems
Resource naming
Process granularity and their interaction
Resource management
File system
DNS and advanced name systems


G. Coulouris, J. Dollimore, T. Kindberg: 'Distributed Systems: concepts and Design', fifth edition, Addison-Wesley, 2005.

M.L. Liu: 'Distributed Computing', Addison-Wesley, 2003.

J.F. Kurose, K.W. Ross: 'Internet e Reti', McGraw-Hill, 2001 (translated in 2001 from 'Computer Networking: a Top-Down Approach Featuring the Internet', 2001).

A.S. Tanenbaum, M. V.Steen: "Distributed Systems: Principles and Paradigms", Prentice-Hall, second edition 2007, and first 2002.

B. Forouzan, F. Mosharraf: “Computer Networks, a top down approach”, McGraw-Hill, 2012.

A.S. Tanenbaum: 'Computer Networks', Prentice-Hall, 1988 (translated in 'Reti di Calcolatori', Jackson).

D. Reilly, M. Reilly: 'Java Network Programming and Distributed Computing', Addison-Wesley, 2002.

Teaching methods

The course is organized on class lectures and on laboratory sessions. The two activities are strictly intertwined so that the lab hours are devoted to the explained topics presented in class at the same time. The projects in lab are to be given in the lab practice.
Both parts are evaluated in the final results.

Several lab proposals are presented in class and students are requested to solve them in groups. The main verification is done in the lab later, but in a strict sequence with the proposals (the schedule is going to be published) and the group and individual results are recorded and taken into account in the final evaluation.

The lab session, highly recommended, tend to put together exactly the same environments of the final test (part in C and part in Java ).
Specifically we ascertain skills suitable for small and medium size project, typically Client/Server and with different goals and objectives:
- socket both in C and Java, with different communication protocols and usage involvement;
- RPC, for client/server high level projects, with SUN solutions;
- RMI, for Java design of client/server interactions.

Attending both class and labs is particularly important toward the final results.

Have in mind that the teaching context will be mixed, both in presence and online. All the details of the provisioning (virtual machines, details about exams …) and tools will be given during the class.

While exams and classes will be given on an individual base, the labs are organized in groups and evaluated on the group base.

Any student is responsible of her/his environment and of its correctness and usability during lab and exam tests.
We require any student to be capable of autonomously design and implement a small project for a typical distributed solution case with the above tools.

Please, be advised that any cheating and any fraud attempt is going to be prosecuted severely.

URL: lia.disi.unibo.it/Courses/RetiT

Assessment methods

The objective of the assessment is to verify the whole capacities of orientation of the student in solving small projects in autonomy.

The final evaluation depends on two main parts:

  • A project to be developed and deployed in the laboratory in a time-constrained session and with no limit to the material students can personally consult. The project must be given in the lab and by using both the two main environments of the class tools (both C-Based and Java-based).
  • a final oral examination.

The project part gives a vote over 30, that stems from the correct solutions in both environments.
The oral part, to be taken only after a success in the first part, it is used to verify the knowledge and the orientation over the whole class material, and complete the final vote - also evaluating other sources (given in group solutions, extra projects and additional elements).

Teaching tools

In the classroom we tend to use slides and to stimulate discussion by using small example case studies.
See the web side of the course at the URL: lia.disi.unibo.it/Courses/RetiT

The lab provides some usual and recommended tools and environments for the development and deployment of distributed projects.

Students are advised to become familiar with most of them, and even with other chosen ones, that are going to be used in the final tests.
Also students are advised to go and become expert in the tools of the UNIX (Linux) environment: those abilities are very important toward the success of the evaluation.

Links to further information


Office hours

See the website of Antonio Corradi