70226 - Network Programming

Course Unit Page

Academic Year 2018/2019

Learning outcomes

Basic knowledge of network programming. At the end of the course the student should be able to understand the more common technologies used for building network infrastructures, to design distributed software applications and to implement them.

Course contents

  • Internet and computer networks: Internet, protocols, client-server architecture, access networks, network medium, packet and circuit switching, ISPs and Internet backbones, packet delay, packet loss, end-to-end delay, throughput, protocol layers and service models, computer and network security.
  • Application layer: architectures, application level protocols (Web and HTTP, FTP, SMTP, POP3, IMAP, DNS), P2P architectures (BitTorrent), socket programming.
  • Transport layer: services, multiplexing and demultiplexing, connectionless service, UDP protocol, reliable data transfer, pipeline protocols, Go-Back-N, selective repeat, connection-oriented communication, TCP protocol, congestion control.
  • Network security: basic principles and concepts. Packet filtering firewall and application-level proxy.


  • James F. Kurose, Keith W. Ross. Reti di Calcolatori e Internet, un approccio top-down. Pearson. Settima edizione.
  • A. S. Tanenbaum, D. J. Wetherall. Reti di Calcolatori. Pearson. Quinta edizione.
  • B. Forouzan, F. Mosharraf. Reti di Calcolatori. Un approccio top-down. McGraw-Hill Companies, 2013. ISBN: 978.8838668197.

Teaching methods


Assessment methods

Written test.

Teaching tools

The slides and additional resources used during the lessons are available on: https://iol.unibo.it/ to access the repository you will need your official student username/password given by the University.

Links to further information


Office hours

See the website of Giovanni Pau

See the website of Chiara Contoli