28024 - Computer Networks T (L-Z)

Academic Year 2022/2023

  • Moduli: Antonio Corradi (Modulo 1) Luca Foschini (Modulo 2)
  • Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2)
  • Campus: Bologna
  • Corso: First cycle degree programme (L) in Computer Engineering (cod. 9254)

    Also valid for First cycle degree programme (L) in Computer Engineering (cod. 9254)

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

Readings/Bibliography

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

This class has a specific objective of making students develop a new mindset in project design in the direction of system programming (and not application programming).
The style of programming in-the-small for integrating distributed applications, mainly Client/Server, must be more aware of the resource usage and of all involved levels present at the execution.
The projects will use both Java and C.

 

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.
Several lab proposals are presented in class and students are requested to solve them as a way of verifying design skills and enhancing the student capacities, in the direction of the final test

The lab sessions, 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:
- sockets 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 only in presence this year, both for classes, labs and exams. All the details of the deployments in labs and tools will be given during the class.

All exams and classes will be given on an individual 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.

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

http://www.lia.deis.unibo.it/Courses/RetiT/

Office hours

See the website of Antonio Corradi

See the website of Luca Foschini

SDGs

Quality education Gender equality Industry, innovation and infrastructure Sustainable cities

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