UCL CS 0133: Distributed Systems and Security (Fall 2018)

Announcements

All class-related announcements and discussion are available on the 0133 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, 0133 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 and graduate students. For undergraduates, prior completion of Networked Systems (3035) or equivalent prior experience is a prerequisite. For graduate students, concurrent enrollment in Networked Systems (0023) or prior equivalent experience is required. The undergraduate and graduate versions of 0133 are identical: they share the same syllabus, lectures, readings, courseworks, exam, and weighting of marks.