This course provides a comprehensive survey of the design and organization of computer networks. After beginning with some background on the fundamentals of data communication and communication infrastructures, and on socket programming, the course will largely follow a bottom-up approach, covering protocols for reliable data transfer, multiple access protocols, layer 2 networks, routing, congestion control, quality of service, and transport layer protocols, before finally looking at some important applications and the cross-cutting issues of network security. The principles we discuss will be made concrete through study of existing systems, most notably the Internet and its structure, protocols, and applications.

Course Syllabus

Course Web Site (for registered students)