Design and analysis of algorithms, emphasizing those suitable for use in distributed networks. Covers various topics including distributed graph algorithms, locality constraints, bandwidth limitations and communication complexity, process synchronization, allocation of computational resources, fault tolerance, and asynchrony. No background in distributed systems required.