Prerequisites
Prior programming and operating system knowledge recommended.
Objectives
At the end of the course, students must understand: - Computer networks and be able to analyze the main paradigms. -The TCP/IP protocol architecture and identify existing problems and evolution trends. Students must also have acquired the skills and methodologies needed to: - Analyse the essential aspects of network performance - Analyse a network protocol - Configure simple services and networks, as well as to detect errors and correct them.
Program
1) Introduction - network components; access networks, physical media, and digitization of information; core networks, switching and Internet structure; Degradation factors and performance metrics; TCP/IP protocol architecture; historical evolution 2) Application layer - networked applications, client-server and peer architectures; API and socket programming; Web and HTTP; the e-mail; name service and DNS; file distribution; streaming; network management and SNMP 3) Transport layer: connectionless transport and UDP; reliability and TCP; congestion control and TCP 4) Network layer - data and control; IPv4 and IPv6 (addressing, fragmentation, configuration, address translation and resolution); routing algorithms, intra-AS routing, and OSPF; inter-AS routing and BGP; ICMP; SDN 5) Link layer: error detection and correction; multiple access; local area networks; level 2 switching and addressing; virtualization and data center networks
Evaluation Methodology
50% continuous evaluation / 50% non-continuous evaluation
Cross-Competence Component
The discipline seeks to stimulate a diverse set of transversal competences, suitable for a BSc student:: Critical and Innovative Thinking - Lab practice, programming project, and theory-based work enable to develop strategic thinking, critical thinking, creativity, and problem-solving strategies without explicit assessment. Intrapersonal Competencies - Performing laboratory work involves components of productivity and time management, stress management, proactivity and initiative, intrinsic motivation, and decision making without explicit assessment. Interpersonal Skills - In the network programming project, 20% of the project grade refers to the ability to work in teams and 20% of the demonstration grade to the ability to present the solution orally.
Laboratorial Component
During laboratory classes, students perform group work of 2 or 3 elements. Laboratory activities consist of traffic analysis, network configuration, debugging, and programming. Quizzes, experimental tests, and demonstrations are used to assess the students' performance. Laboratory classes are compulsory attendance classes, and the maximum limit of 2 absences is acceptable. If the student cannot attend at the scheduled time, he/she must agree in advance with the professor a replacement time. Exceptional situations, such as health problems, must be accompanied by valid justification (medical certificate, for example) for further analysis by the professor.
Programming and Computing Component
The course has a crucial programming component, which is the development of a network application using the socket API and the Pyhton programming language. Development goes through the various phases of the SW development process: design, specification, development, and testing. This component represents 1.5 ECTS of the teaching effort.
More information at: https://fenix.tecnico.ulisboa.pt/cursos/lerc/disciplina-curricular/845953938490016