Computer Networks, BSc, VU (2017-ongoing)

The emphasis in this course is on fundamental concepts in digital communication. In modern computer networks, data communication takes place by sending data from A to B via a layered architecture where each layer implements a different abstraction. The higher layers are responsible for handling web pages, emails and similar things, that are translated into packets, bits, and eventually digital signals on physical links (e.g., lightpulses, electrical signals in copper wires, radio waves). This layered architecture with increasing levels of abstraction and separation of concerns, is a fundamental approach that you will encounter in all aspects of computer science (and beyond). Within this architecture, we will concern ourselves with questions like: what route should the data follow through the network, what do we do when errors occur, how do we interconnect two networks that have completely different properties, etc. Following the IEEE/ACM Computer Science curriculum, topics to be discussed include: the layered network architecture, different types of networks (e.g., wired and wireless, LAN and WAN), multiplexing, error control, flow control, routing and forwarding, names and addresses, high-level architectures of networked applications (peer-to-peer, client/server, etc), performance issues, and scalability issues. These issues are discussed while exploring technology behind the Internet and its popular protocols (e.g., TCP, UDP, Ethernet, Wifi, etc.).


After successfully completing the Computer Networks course, you are able to:

  1. Explain the basic principles and modern functions of computer networks and data communication.
  2. Describe the layered network architecture and explain the essential function(s) in these layers.
  3. Apply basic physics, theorems from information theory, and network protocol properties to calculate network properties such as maximum bit rate, minimum round-trip latency, window size, etc.
  4. Apply networking mechanisms and algorithms to detect and correct transmission errors, compute routing tables, set window sizes, etc.
  5. Explain the concept of Quality of Service, why different applications have different networking requirements, and how these requirements translate to network and protocol properties.
  6. Explain issues related to performance and scalability in today's popular networking protocols.
  7. Demonstrate proficiency in socket programming by implementing basic networked applications.

Course Code


The Team