Course syllabus for Computer networks

Course syllabus adopted 2021-02-26 by Head of Programme (or corresponding).

Overview

  • Swedish nameDatornätverk
  • CodeEDA387
  • Credits7.5 Credits
  • OwnerMPCSN
  • Education cycleSecond-cycle
  • Main field of studyComputer Science and Engineering, Software Engineering
  • DepartmentCOMPUTER SCIENCE AND ENGINEERING
  • GradingTH - Pass with distinction (5), Pass with credit (4), Pass (3), Fail

Course round 1

  • Teaching language English
  • Application code 12119
  • Maximum participants90 (at least 10% of the seats are reserved for exchange students)
  • Block schedule
  • Open for exchange studentsYes

Credit distribution

0111 Laboratory 1.5 c
Grading: UG
1.5 c
0211 Examination 6 c
Grading: TH
6 c
  • 26 Okt 2023 am J
  • 04 Jan 2024 pm J
  • 29 Aug 2024 pm J

In programmes

Examiner

Go to coursepage (Opens in new tab)

Eligibility

General entry requirements for Master's level (second cycle)
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.

Specific entry requirements

English 6 (or by other approved means with the equivalent proficiency level)
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.

Course specific prerequisites

You should have taken at least one course in computer programming. We also expect 7.5hp or equivalent in one of the four areas: Computer Communication, Operating Systems, Algorithms, Programming (C or C++) and Mathematics (Discrete Mathematics).

Aim

Computer networks cover a range of sub-specialties including: self-stabilizing algorithms for computer networks, programming using the BSD socket API, software-defined networks and communication concepts and protocols. Mastery of computer network involves both theory and practice in the design, implementation and use of network protocols and services.

The aim of this course is to learn to design and analyze self-stabilizing algorithms for network protocols, to have experience in socket programming and to gain knowledge in existing communication networks including supporting systems and protocols fundamental tasks. The course, which builds on the fundamental TCP/IP courses, also aims to provide in-depth knowledge of designing and analyzing fault-tolerant network-oriented algorithms and to gain knowledge in existing communication networks, such as the Internet technology with example of core supporting communication protocols. Experience with network oriented programming is part of the course.

Learning outcomes (after completion of the course the student should be able to)

Knowledge and understanding You should be able to describe and analyze basic protocols and their limitations on networks such as the Internet. You should also be able to analyze and discuss network issues, such as software-defined networks (SDNs), TCP connections, contention, performance, and flow control. Skills and abilities You would need to show the ability to define and analyze a computer network in terms of communication graphs and as a distributed system. You should be able critically to analyze the effect of failures, such as transient faults, message omission, and topology changes, on the system and how can such failures propagate and affect computer networks. [written exam and home assignments]During the course, the students are required to develop small-scale network applications using fundamental networking techniques. You should be able to design and develop your own network-oriented program and then test and demonstrate it in the lab. The written communication skills in this course include the write up of lab reports and the demonstration of protocol correctness. You should be able to explain and demonstrate the correctness of the studied protocol as well as clearly describe the network algorithms that you design yourself. [written exam and home assignments] The successful completion of the course requires a skillful and knowledgeable demonstration of these software developments for advanced fault-tolerant client-server and peer-to-peer architectures. You are also expected to design distributed algorithms for computer networks and to show why they work. Judgment and approach The student judgment skills should include the ability to describe, design and analyze existing and new algorithms for network protocols with a very strong emphasis on self-stabilizing algorithms for computer networks. [written exam, home assignments, and labs]

Content

This course offers learning experiences that involve hands-on experimentation and analysis as they reinforce student understanding of concepts and their application to real-world problems. Several laboratory experiments are given and involve API programming for fault-tolerance network systems, and Internet interconnections and services from a practical perspective, and protocols' design and analysis with a strong emphasis on self-stabilizing algorithms. This course provides the students the ability to understand fundamental issues in the design of methods for computer network protocols.

Organisation

Lectures, exercises, home assignments, and laboratory assignments.

Literature

W. Stevens, Bill Fenner, Andrew M. Rudoff, Unix Network Programming, Volume 1: The Sockets Networking API, 3rd edition, Addison-Wesley Professional, ISBN-10: 0-13-141155-1.

S. Dolev, Self-Stabilization, 1st edition, The MIT Press, ISBN-10: 0-26-204178-2.

Textbook is complemented by lecture notes, articles, and scientific papers.

Examination including compulsory elements

Written exam at the end of the course and approved assignments (pre-/post- lecture questions, algorithm assignments, programming labs, and networking labs).

The course examiner may assess individual students in other ways than what is stated above if there are special reasons for doing so, for example if a student has a decision from Chalmers on educational support due to disability.