Lecture: Computer Networks

In this lecture-based course we will explore the principles underlying the design of computer networks and the Internet. We will discuss the layered architecture of the network stack and dive into the network protocols at each layer that make data communication happen from one place to another. Specific topics that will be covered include modulation, addressing, packet switching and forwarding, routing, reliable delivery, congestion/flow control, and applications like DNS, world-wide-web, and video streaming. The lecture will be accompanied by exercise sessions for homework assignments.

Learning Goals

After taking this course, you will be able to

  • Explain the basic principles of computer networks and the Internet.
  • Describe the layered architecture and explain the essential function(s) in each layer.
  • Apply basic information theory and network protocol specifications to calculate network properties such as maximum bit rate, congestion window size, data transfer time, etc.
  • Implement network protocols to build own customized networks and networked applications.

Method of Assessment

The course goals will be assessed by a final written exam (100% of the final grade). Throughout the course, there will be non-graded exercises to help with the preparation for the exam. There will also be two project assignments and passing each of them can bump up your final grade by one step (max. two bonus steps).

 

Textbooks

  • Andrew S. Tanenbaum, David J. Wetherall. Computer Networks (5th edition).
  • Larry Peterson, Bruce Davie. Computer Networks: A Systems Approach (online at book.systemsapproach.org/).

Prerequisites

Since this is a third-year BSc course, it is expected that you already have knowledge about computer organization, operating systems, systems programming with C, and other programming languages like Python.