UCL CS M030/GZ03: Distributed Systems and Security (Fall 2014)


All class-related announcements and discussion are available on the M030/GZ03 Piazza site.

Class Essentials

This class divides roughly in half. The first half of the class explores the design and implementation of distributed systems in case-study fashion: students read classic and recent research papers describing ambitious distributed systems. In lecture, students critically discuss the principles that cause these systems to function correctly, the extent to which these systems solve the problem articulated by the authors, and the extent to which the problem and solution chosen by the authors are relevant in practice. Topics discussed include consistency, fault tolerance, performance, correctness definitions for concurrent and distributed execution, distributed agreement, and disconnection.

The second half of the class explores computer system security, again largely in case-study fashion, through the reading of research papers and their critical discussion in lecture. Topics covered include security properties and threat models, an introduction to cryptographic primitives and their correct use in practice, the Kerberos and SSL systems, formal reasoning with certificate chains, software vulnerabilities and exploits, exploit defenses, and safe execution of untrusted code.

Correctness under concurrency is a central challenge in distributed systems, and one that can only be fully understood through experience building such systems (and encountering subtle bugs in them). To give students experience of this sort, M030/GZ03 includes one significant programming coursework in C, in which students implement a simple distributed system that must provide an ordering guarantee. Further written coursework helps students solidify their understanding of the security material in the class.

Distributed Systems and Security is open to 4th-year undergraduates (M030) and graduate students (GZ03). For undergraduates, prior completion of Networked Systems (3035) or equivalent prior experience is a prerequisite. For graduate students, concurrent enrollment in Networked Systems (GZ01) or prior equivalent experience is required. Despite the differing module codes, M030 and GZ03 are identical: they share the same syllabus, lectures, readings, courseworks, exam, and weighting of marks.