Advanced Systems Programming

2025-2026

Algemene informatie

Vakcode XB_0150
Studiepunten 6 EC
Periode P1
Vakniveau 300
Onderwijstaal Engels
Faculteit Faculteit der Bètawetenschappen
Vakcoördinator dr. D. Bonetta
Examinator dr. D. Bonetta
Docenten mr. S. Ud Din
dr. D. Bonetta
ir. J.J.R. Donkervliet MSc
B. Chandrasekaran
Onderdeel van opleiding(en)

Praktische informatie

Voor dit vak moet je zelf intekenen. De inteken- en afmeldtermijnen staan op VU.nl

Onderwijsvorm Werkcollege, Practicum, Hoorcollege
Dit vak wordt in het Engels aangeboden. Omschrijvingen kunnen daardoor mogelijk alleen in het Engels worden weergegeven.

Doel vak

The objective of this course is to teach students advanced and practical concepts in systems and network programming, with an emphasis on performance in modern computing environments. Upon completion of this course, students will be able to:

  • Understand end-host systems and networking concepts [Knowledge and understanding]
  • Analyze various network stack designs (kernel, userspace), APIs (e.g., sockets, select, epoll) and their usage in high-performance applications (async I/O, multi-threading), with a focus on design trade-offs, performance, and implementation efforts [Applying knowledge and understanding] [Making judgements]
  • Use Linux concepts and tools (e.g., perf, strace, bpftrace, tcpdump, ethtool, ping) for debugging and performance analysis [Knowledge and understanding] [Applying knowledge and understanding]
  • Explain design and implementation challenges associated with multi-core systems and high-speed networks [Applying knowledge and understanding] [Making judgements]
  • Understand how performance considerations influence the design of networked and concurrent applications (e.g., scalable Node.js/Go HTTP servers) [Knowledge and understanding] [Making judgements]
  • Analyze and optimize user-level and system-level performance in high-throughput networking applications using profiling tools and benchmarking techniques [Applying knowledge and understanding] [Lifelong learning skills]
  • Understand ongoing and emerging research challenges in systems and networking technologies [Knowledge and understanding] [Lifelong learning skills]
  • Apply the knowledge gained into building a practical high-performance networking application [Applying knowledge and understanding] [Lifelong learning skills] [Communication]

Inhoud vak

The course covers recent advancements in systems and networking technologies in general-purpose computing (e.g., data center, cloud computing). The course is split into two themes: end-host systems and network infrastructure.

In the end-host systems theme, students will learn key concepts in networking and systems design with a focus on performance, scalability, and efficient use of modern hardware. Topics include networking concepts (stateful and stateless offloading, RSS, SGE, multiqueue NICs), internals of the Linux networking stack, tools (ping, tcpdump, perf, strace), challenges associated with building high-performance software (benchmarking, profiling), and performance optimizations (many/multi-core scalability, asynchronous IO). Students will also explore how user-level network applications (for example, Node.js, Go) operate and interact with the operating system’s networking stack and how design decisions affect performance and responsiveness.

The second theme of the course will be focused on the recent development in network infrastructure and its management. Students will learn the details about the protocols running on our Internet and how the Internet is managed with new approaches like software-defined networking, and how to utilize these new technologies to build popular Internet applications/services.

Aanvullende informatie onderwijsvormen

2x Lectures per week, Practical coding group project (with 2 or 3 students) with 1 lab session per week for QA (deliverables: code and report)

Toetsvorm

Exam (50%, 50 points), Practical Assignments (50%, 50 points over 5 assignments) – resits only available for the exam. Both the exam and the practical assignment need to be passed separately. Their cut off is 25 points for both. A total of (25 + 25 =) 50 / 100 points will give you a grade of 6.0/10.

Students are graded on both the completion of the assignment as well as their understanding of the material. Please note that your grade will be registered as follows:

  • If you do not submit any assignment and do not participate in the exam, you will receive an NS.
  • In all other cases, you will receive either a numeric grade or incomplete (NVD).
  • If you did not meet the minimum grade requirements for the assignments or the exam, your grade is NVD.
  • If you plan to drop the course, do not submit anything, as NVD is administratively considered a failing grade

Literatuur

Slides (provided in the class), project handbook, and further online reading material/links.

Aanvullende informatie doelgroep

Minor Deep Programming

Aanbevolen voorkennis

IMPORTANT: Knowledge of C/C++ is essential for the practical assignments. Knowledge of other languages or frameworks such as Node.js/Go is not a requirement.

Operating systems (userspace, kernel, processes, memory management), System Architecture (I/O devices, interrupts, CPU caches), Computer Networks (TCP/IP, Ethernet, Packet switching networks, HTTP), good knowledge of C/C++ programming (important) with sockets, Linux build and coding environment (bash, CMake, gdb, gcc, make and friends). Courses that cover this background systems knowledge include X 400487 Computer Networks, X 405067 Operating Systems, XB 40009 Computer Organization. It is strongly recommended that you must finish these courses before you take this course.

In case you lack these skills and/or knowledge, we can provide additional reading material, however, you need to study them by yourself outside the class hours. Keep in mind this is not a course to learn how to program in C/C++ or learn about networking concepts like how to program sockets or what is TCP/IP or HTTP. This is an advanced course that focuses on low-level details of designing and programming a high-performance networking application.