UCL CS 3035/GZ01: Networked Systems (Fall 2014)


All class-related announcements and discussion are available on the 3035/GZ01 Piazza site.

Class Essentials

This class offers a rigorous introduction to the problems that arise when networking computer systems, and algorithms and system designs that solve these problems. Along the way, the architectural principles and protocols that underlie the Internet will be explained in detail. Topics to be taught will include the physical layer, widely used link layers (wired and wireless), MAC protocols, internetworking, intra-domain routing, reliable transport, congestion control, wide-area (policy) routing, naming, network security, the end-to-end principle, and network applications.

Understanding the nuanced interactions between a network's distributed entities is a vital skill, without which one cannot truly be said to understand networking. To help students develop this skill, 3035/GZ01 incorporates significant programming courseworks in Python and Java, in which students build working implementations of network protocols.

Networked Systems is open to 3rd-year undergraduates (3035) and graduate students (GZ01). Despite the differing module codes, the two classes are identical: they share the same syllabus, lectures, readings, courseworks, exams, and weighting of marks. Prerequisites for the class include familiarity with basic graph algorithms (e.g., Dijkstra's algorithm), comfort with analysis of asymptotic algorithmic complexity (including big-O notation), comfort writing significant programs in Java, and comfort picking up a new programming language quickly (or alternatively, prior experience programming in Python). Students not studying for a degree in Computer Science must consult the instructor about whether they meet the prerequisites; those who are unsure about whether they meet the prerequisites should also consult the instructor.