The Internet is the largest machine humans have ever built — billions of devices, owned by no one, agreeing to speak the same handful of protocols so that a message can hop across the planet in milliseconds. This master's-level course opens that machine up. We work top-down, the way Kurose & Ross teach it: start at the application a user touches, then peel back each layer — transport, network, link — to see how the abstraction above is honoured by the machinery below.
But this is not only a networking course. Its second half is about distributed network
programming — actually building the systems that run on top of the Internet. You
will meet the
The course assumes fluency with
What the Internet is as a system of networks, and the layering discipline that tames it.
The protocols users actually meet — HTTP, DNS, REST — and how the modern Web moves faster.
How two endpoints build a reliable, fair, flow-controlled conversation over an unreliable network.
Addressing the whole planet, and computing the paths a packet takes across autonomous networks.
The last hop: framing, error detection, sharing a wire, and the switches that build a LAN.
The craft of writing networked software: sockets, concurrency models, framing, and a real HTTP server.
Cryptography meets the network: how TLS secures the Web, and how networks are attacked and defended.
Once many machines cooperate, new laws apply: partial failure, time without a global clock, agreement.
The components every large system is assembled from: RPC, messaging, load balancing, caching, services.
Where networking is heading: decentralised systems, programmable networks, and the real-time Web.