Term: Period 2, 2019-2020
Coordinator: Lin Wang
Target: mCS, mPDCS
This is a course on advanced topics in computer networking. The context will span broadly from the network core, across the Internet, all the way to the network edge. Students will learn about the recent/current developments in computer networks and the concept of the main technologies (data center networking, software defined networking, network function virtualization, in-network computing, video streaming/analytics, Internet-of-Things, edge computing, etc) that are currently being adopted. After this course, students will understand the design of these technologies and be able to reason about the design choices therein. Students are also expected to build a network system by applying some of the designs in a simulated environment, and analyze and evaluate the merits and limitations of the designs.
Computer networks are now part of our daily life and many of us may have the perception that the network has remained unchanged as it was originally designed. Is that true? The answer is no, of course. In this course, we will unveil some of the most significant developments under the surface of the Internet. New developments have been carried out not only for the traditional Internet, but also at the usually overlooked places, being the network core and edge.
This course will be organized in three parts according to the network context: the network core (data center), the Internet, and the network edge (mobile).
Specifically, the course will focus on (1) core networking technologies for data center environments (architecture, congestion control, remote direct memory access, software defined networking, network function virtualization, in-network computing and their applications), (2) new protocols/mechanisms for the Internet (multipath, QUIC, video streaming, security), and (3) emerging technologies for the network edge (mobile/edge computing, Internet-of-Things) and exciting applications.
Much of the course will be based on paper-reading, complemented with a hands-on programming project with several milestone steps spanning across the whole course. The project involves programming skills in C++ and Python.
Lectures in combination with self-study and practical assignments.
(6 ETCS * 28 hours/ETCS = 168 hours)
Written exam (50%), programming assignments (30%), report (20%)