Computer Networks

Objectives

Learning goals

  • Introduction to computer networks: terminology, organization, services, components and structuring principles
  • Socket-based programming interfaces
  • Application Protocols with an emphasis on those associated with the WWW
  • Fundamentals of TCP/IP networks
  • Fundamentals of communication channels in general and Ethernet switched networks
  • Fundamentals of security in computer networks

Know-how

  • Understand the architecture and the internals of computer networks
  • Performance indicators and their estimation and measurement
  • Understand the transport and network layers impact in networked applications
  • Understand how content is diffused
  • Transport interfaces and their usage
  • Analyze, structure and implement protocols and distributed applications
  • Technologies used to ensure privacy, integrity and authenticity in communications made through computer networks.

General characterization

Code

8149

Credits

6.0

Responsible teacher

Pedro Abílio Duarte de Medeiros

Hours

Weekly - 5

Total - 70

Teaching language

Português

Prerequisites

Good acquaintance with programming and operating systems.

Bibliography

L. Peterson, B. Davie, Computer Networks: a Systems Approach https://book.systemsapproach.org  (2024 6.2-dev live update)

https://github.com/SystemsApproach/book/releases/download/v6.1/book.pdf

J. Legatheaux Martins, Fundamentos de Redes de Computadores, FCT-NOVA 2018 https://legatheaux.eu/book/cnfbook-pub.pdf

C. Severance, Introduction to Networking 2015 https://do1.dr-chuck.net/net-intro/EN_us/net-intro.pdf

Teaching method

Lectures are intended to support the instructor’s presentation of fundamental issues, as well as discussion of such topics with students. In some lectures, standard problems are solved and discussed and protocols are analyzed.

Programming assignments take place in a computer laboratory and their aim is to solve problems and learn how to build network applications and protocols. These exercises, protocols and applications use the principles presented during lectures. 

Evaluation method

Plagiarism and fraud issues will be dealt with in accordance with the FCT evaluation regulations. The use of "GPT Chat"-like tools is allowed and its use does not need to be reported.

Evaluation has two componentes: lecture-related and laboratory-related..

Lecture-related evaluation

The mark of this componente (NT) is obtained through two tests or an exam, both closed-book. 

NT = (mark of test 1  + mark of test 2 ) / 2 or

NT = mark of exame

NT must be greater that 9,5 points.

Laboratory-related evaluation

The mark of this component  (NL) is obtained combining the marks of 4 programming assignments  (EP1, EP2, EP3, EP4)  solved in groups of no more than 2 studentes. NL must be greater that 6,0 points.

The assignments have marks NEP1, NEP2, NEP3, NEP4 and 

NL = (NEP1 + NEP2 + NEP3 + NEP4) / 4.

Mark NEPi is calculated combining two marks in each assignment:

- Group evaluation: NGi, related with the funcionality of the code delivered

- Individual evaluation NTPi :  obtained through the evaluation of the answers to special questions that appear in the tests. NTPi is a mark between  0 and 100 and  NEPi will be:

-If NTPi >= 50,  NEPi = minimum( 20 , NGi )

-else if NTPi >= 20,  NEPi = minimum( 14 , NGi )

- else NEPi = 0;

If a student is absent, with justification, from the test in which NTPi is obtained, the NTPi component will be obtained in a practical test on a date to be agreed, applying the above rules for obtaining NEPi. This test may be used to obtain the minimum practical grade, for students who have submitted at least two of the assignments.

Final mark (NF)  

NF = 0,75*NT + 0,25*NL

Practical grades from previous years

All students who obtained a practical grade higher than 6.0 in the previous three years can use this grade as a NL, with weight 0.25. Students can choose to obtain a new NL grade in 2024/25, in which case they must register for a practical shift and submit the work on the specified dates and answer the questions about the exercises in the tests. If they register for practical shifts but withdraw from those classes,  NL will be the one obtained previously.

Improving a grade obtained in previous years

It is only possible to improve the theoretical-practical component; this improvement can only be done in the exam.


Subject matter

Computer networks: terminology, organization, services, components and structuring principles (what is a network, application structuring and application protocols: applications and transport requirements. Nome simbólicos e endereços; Domain Name System. Socket-based programming interface.


Data-link layer: technologies for point-to-point connection and for local area networks (wired and wireless). Access to a shared communcation infrastrucure. Error detection.

Network layer: structuring and routing algorithms. Internet protocols: IP, DHCP, ARP e NAT. Internet routing.

Transport layer: Rqueirments and techniques for reliable information transfer. Stop and Wait and Sliding Window. TCP Protocol: flow and congestion control.

Computer network security: technologies for guaranteeing privacy, integrity and authentication of communications. Transport-level security (TLS). Virtual Private Networks.

Application protocolos: FTP, SMTP, telnet. Web-related protocolos: HTTP. Introduction to web application programming: server-side and client-side. Video content distribution networks over HTTP.

Programs

Programs where the course is taught: