ECE 750 Topic 10 - Spring 2014

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.