Internet Programming

Term: Period 2, 2019-2020
Coordinator: Lin Wang
Target: mCS, mPDCS

Course objectives

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.

Form of the tuition

Lectures in combination with self-study and practical assignments.
(6 ETCS * 28 hours/ETCS = 168 hours)

  • 32 hours (4 hours * 8) for lectures
  • 56 hours for project
  • 80 hours (8 hours * 10) for paper reading and report

Types of assessment

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


1. Introduction

  • Course logistics
  • Paper reading, writing reviews
  • Tool for the project (mininet)

2. Data center networking A

  • Data center architectures (VL2, Jupiter Rising, Helios)
  • Congestion control in data centers (DCTCP, pFabric, CONGA)

3. Data center networking B

  • Flow scheduling (D3, Hedera)
  • Coflow scheduling (AALO, PIAS, CODA)

4. RDMA in data centers (guest lecture by dr. Animesh Trivedi)

  • Smart NIC/RDMA deployment in data centers

5. Software defined networking

  • General idea (Ethane, Onix)
  • Private WAN (B4)

6. Network function virtualization

  • NFV management (E2, Netbricks, Ananta)
  • Programmable data plane (Click, P4, network accelerators)

7. In-network computing

  • In-network aggregation (NetAgg, DIAT)
  • In-network key-value store (IncBrick)
  • In-network caching (NetCache, DistCache)
  • In-network coordination (NetPaxos, NetChain)

8. New network protocols

  • Congestion control (BBR)
  • Multi-path (MPTCP)
  • QUIC (HTTP/3)

9. Multimedia

  • Video streaming (DASH, bitrate adaptation)

10. Cloud-based secutiry

11. Mobile and edge

  • Video stream analytics (JetStream, AWStream)
  • Deep learning on edge (MCDNN, Neurosurgeon)

12. IoT

  • LoRa
  • Visible light communication