Distributed Algorithms
Contents
Index
Contents
Introduction
This Website
Distributed Systems: Basics
Distributed Systems are Everywhere: Short Video
A Model of Distributed Systems
A model of distributed systems video
Examples
Code Examples
Example: SumPosAndNeg.py
Example Engine for Elementary Simulator: Engine.py
Example Passing Tokens: PassingTokens.py
Example Greatest Common Divisor: gcd.py
Example Distributed Greatest Common Divisor: gcd_distributed.py
Example: For later chapter -- Global Snapshots: GlobalSnapshots.py
FAQ
More about Limitations of the Model
Video about Message Delivery on Different Channels
Review
Data flow in Computations
States: Examples
Dataflow and Computations: Examples
Distributed Systems Introduction: Video
Timelines, Dataflow, and States: Video
States: FAQ
Dataflow and Computations: FAQ
Computations: More Examples
A video of a computation: sequence of states
States: Review
Dataflow and Computations: Review
Cuts of Dataflow Graphs
Consistent Cuts and Computations: Examples
Cuts of Dataflow Graphs: Review
Snapshots and Clocks
Global snapshots
Snapshots Video
Video on States Before and After Snapshots
Examples and Details
FAQ
Review
Applications of Global Snapshots
Logical Clocks
Video on Logical Clocks
Video on Vector Clocks
Global Snapshots with Logical Clocks
Global Snapshots with Logical Clocks Video
Detecting Termination
Video on Detecting Termination
Detecting Database Deadlock
Detecting Database Deadlock Video
Agent knowledge
What Agents Know
Diffusing and Gossip computations
The Dijkstra-Scholten diffusing computation algorithm
Diagrams showing Diffusing Computation
Applications of Diffusing Computation
Combining Algorithms: How an Agent determines a Global Snapshot.
Diffusing Computation: A Small Self Test
Consensus Algorithms
Impossibility of asynchronous consensus with faulty agents
Serializable transactions in faulty systems.
The Paxos algorithm
Paxos Self Test
The Raft algorithm: Not done
Byzantine faults
Algorithms dealing with Byzantine faults
Byzantine algorithms with written messages
Byzantine algorithms with written messages Video
Byzantine algorithms with oral messages
Cryptocurrency
Introduction to cryptographic hash functions.
Introduction to cryptographic hash functions - Presentation.
BitCoin algorithm
Etherium algorithm
Proofs of Correctness of Sequential Programs
Basics: Introduction
Nondeterministic iteration
Predicates
Hoare triples
States & Invariant
Proving termination.
Examples: correctness.
Sorting
Shortest paths in a graph
Distributed averaging
Agents forming patterns in flight
Earliest meeting time of concurrent agents
Distributed Collaboration
Mutual Exclusion: Distributed Dining philosophers
Mutual Exclusion: Distributed Dining philosophers Slides
Distributed Resource Management: Drinking philosophers
Distributed Resource Management: Drinking philosophers Slides
Rendezvous in Distributed Systems: Committee Coordination
Self stabilization
Self stabilization of a token ring
Clock synchronization
Network and Precision Time Protocols
Clock synchronization in distributed systems
Cloud-computing algorithms
Map-reduce
Millwheel
Stream algorithms
Finding repeated elements in streams: Misra & Gries
Finding repeated elements in streams: Approximate algorithms
Distributed data structures
Distributed tables: hashing
Distributed data: BigTable
Continuous distributed systems
Asynchronous averaging
Temporal Logic Applications
State transition systems. Safety. Always, Next operators.
Progress. Eventually. Leads-To
More about Leads-To
Examples with Leads-To and Eventually
K. Mani Chandy, Emeritus Simon Ramo Professor, California Institute of Technology