Internet Programming


Course Objective

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.

Course Content

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.

Teaching Methods

Lectures in combination with self-study and practical assignments.

Method of Assessment

Written exam (50%), programming assignments (30%), report (20%)

Entry Requirements

Ability to read scientific papers professionally. Ability to code in a
complex setting.


No set book. All material will be made available during the course.

Target Audience


Recommended background knowledge

Students should have taken courses on computer networks, programming
paradigms (e.g., OOP). Prior experience with network programming
(socket) and simulation (mininet) is a big plus.

General Information

Course Code X_405082
Credits 6 EC
Period P2
Course Level 400
Language of Tuition English
Faculty Faculty of Science
Course Coordinator dr. L. Wang
Examiner dr. L. Wang
Teaching Staff dr. L. Wang

Practical Information

You need to register for this course yourself

Last-minute registration is available for this course.

Teaching Methods Lecture
Target audiences

This course is also available as: