ECE 750 Topic 10 - Distributed Computing
Instructor
Professor
Mahesh
V.
Tripunitara
Email:
tripunit@uwaterloo.ca
Philosophy
Distribution has become essential to scaling computation. This includes seemingly mundane tasks, such as caching web pages, to more sophisticated tasks, such as multi-party computation of an arbitrary function. Our intent in this course is to study the infrastructure components that make distributed computing happen. We will also consider some applications, but the focus is on the underlying technologies using which computing can be distributed.
Content
Introduction: what is a distributed system? Networking and internetworking – TCP/IP. Interprocess and indirect communication – RPC, RMI, groups, shared memory. Web, peer-to-peer and distributed file systems. Security – use of cryptography in distributed systems. Name services – DNS. Coordination, agreement, transactions and concurrency control. Fault-tolerance.
Prerequisites
Some understanding of network protocols, in particular, TCP/IP. Some understanding of data structures and algorithms. Some background in programming, in particular in C/C++.
Marking
Assignments (including programming tasks): 25%, graduate paper/project: 10%, in-class quizzes: 15%, final exam: 50%.
Text book
“Distributed Systems: Principles and Paradigms,” 2/E, A. S. Tanenbaum, M. Van Steen. Pearson-Prentice Hall. 2006.
I will attempt to have the book on reserve at the library.