In our deeply interconnected world, many details of networking may appear cryptic to its users. In Sep-Oct 2020, together with Lin Wang, I designed and gave a new course called Advanced Network Programming for BSc. final year students at VU Amsterdam. Advanced Network Programming (ANP) course is aimed at teaching students about the recent networking research (research-oriented teaching) in general-purpose cloud computing. At the same time with the practical work, students are trained in state-of-the-practice networking tools used in everyday Linux networking stack (tcpdump
, ping
, traceroute
, arping
, netcat
).
In 2023 - the course was co-taught with Balakrishnan Chandrasekaran, Matthijs Jansen, and Jesse Donkervliet.
Figure 1: Topics covered in ANP course
The goal of the course is to (i) make students aware of the internals of end-host and data center networking advancements; (ii) show practical tools to debug and analyze the Linux stack; (iii) teach low-level nitty and gritty details by implementing network protocols. We cover the following topics in 2023 (Animesh covers lecture 1-6, Bala/Matthijs cover lectures 7-11):
Editable versions of slides 1-6 are available here https://drive.google.com/drive/folders/1o12Qgzj1xFBf-xIcAeALqUN1Gx8iMr29?usp=drive_link. Others to follow soon…
In the course project students develop a working TCP/IP protocol in the userspace. The project consists of five key milestones:
tcpdump
, ping
, traceroute
, arping
, netcat
) and RFC 793. Home folder: https://drive.google.com/drive/folders/1UFGzhx1paBgjHetPBIZL2UmL2VzDw7vt?usp=drive_link.
Slides 1-6 (more to come later) https://drive.google.com/drive/folders/1o12Qgzj1xFBf-xIcAeALqUN1Gx8iMr29?usp=drive_link.
Project assignment https://drive.google.com/drive/folders/1DikFZmkc-jcW1biGPW_XtfHaY6dTsM9M?usp=drive_link.
Project code base (zipped). https://drive.google.com/file/d/1XCMRY38CSDWCNEgmkdUiEDni2AMuliYE/view?usp=drive_link
This course content are distributed under the Creative Commons Attribution 4.0 International (CC BY 4.0), https://creativecommons.org/licenses/by/4.0/