Lecture: Advanced Networked Systems

This lecture-based course will cover concepts and designs for modern networked systems adopted by the Internet and cloud data centers to meet the ever-increasing demands of data transfer and computation driven by big data and machine learning applications. Specific topics include: networking fundamentals (refresher), data center networks (architectures, congestion control), software-defined networks (SDN, OpenFlow), programmable networks (P4, eBPF/XDP), programmable network device architectures (RMT, SmartNICs), in-network computing (caching, aggregation). Much of the course will be based on discussions of cutting-edge research topics, complemented with hands-on programming assignments.

Learning Goals

Upon completion of this course, students will be able to learn the following.

  • Gain knowledge of current research topics in networked systems.
  • Understand the design of these new networked systems technologies and reason about the design choices therein.
  • Build complex networked systems by applying some of these designs, analyze and evaluate the merits and limitations of these designs, and explain the design choices for the built systems.

Method of Assessment

Assessment will consist of two parts:

  • Study achievement: You will pass the study achievement if you obtain no less than 25 out of the 50 points for the lab assignments. Bonus grades will be awarded if you score high for these lab assignments; details will follow in the first lecture.
  • Written exam: You will pass the course if you obtain no less than half of the points for the final written exam. There will be non-graded exercises to help you prepare for the exam throughout the course. 

Reading Material

There is no set textbook for this course. We will mostly use reseearch papers as reading material, which will be published along with the lectures.

Prerequisite

Knowledge of computer networks, operating systems, programming languages, C/C++ and Python programming in the Linux environment, and a keen interest in understanding how things work under the hood. Ability to read scientific papers professionally. Ability to code in a complex setting.