The primary objective of this course is to equip students with foundational knowledge of computer networks and develop their practical and analytical skills in this domain. Students gain hands-on experience with Linux-based networking tools, including packet capture utilities, to configure, troubleshoot, measure, and analyze network performance issues.
Through programming assignments, they capture packets from real networks under a variety of emulated conditions and build simple networking applications using sockets, such as a basic web server, a music streaming server, or a multiplayer networked ping-pong game.
The course also develops a broader systems perspective on the hardware and software infrastructure underpinning the Internet: what limits end-to-end latency, why protocol layering matters, and how reliable transport software delivers guarantees over inherently unreliable network substrates. The goal is to help students understand the design principles behind the Internet, reason analytically about network protocols, and develop practical skills for interacting with real networks.
The video playlist is based on the systems-bucket offering in the IIT Madras BS Data Science program.