Networks, the Internet & Distributed Programming

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 socket API and the art of writing servers that hold tens of thousands of connections, then climb to the hard problems of distributed systems — consensus, replication, the CAP theorem — and the components that turn them into real products: RPC frameworks, message queues, load balancers and CDNs.

The course assumes fluency with threads and processes, basic networking vocabulary, and comfort reading code. Where a topic already has a thorough Primer page — the OSI model, cryptography, the distributed-systems core — we send you there rather than repeat it, and build the graduate-level depth on top.

Module 1 — The Internet and the layered model

What the Internet is as a system of networks, and the layering discipline that tames it.

Module 2 — The application layer and the Web

The protocols users actually meet — HTTP, DNS, REST — and how the modern Web moves faster.

Module 3 — The transport layer

How two endpoints build a reliable, fair, flow-controlled conversation over an unreliable network.

Module 4 — The network layer and Internet routing

Addressing the whole planet, and computing the paths a packet takes across autonomous networks.

Module 5 — The link layer

The last hop: framing, error detection, sharing a wire, and the switches that build a LAN.

Module 6 — Network programming

The craft of writing networked software: sockets, concurrency models, framing, and a real HTTP server.

Module 7 — Security across the layers

Cryptography meets the network: how TLS secures the Web, and how networks are attacked and defended.

Module 8 — Distributed systems foundations

Once many machines cooperate, new laws apply: partial failure, time without a global clock, agreement.

Module 9 — Building distributed applications

The components every large system is assembled from: RPC, messaging, load balancing, caching, services.

Module 10 — Modern and advanced topics

Where networking is heading: decentralised systems, programmable networks, and the real-time Web.

Begin → How the Internet Is Organised