Distributed Computing

COE 523 - Distributed Computing (3-0-3)

Introduction to distributed computing and systems: processes, tasks, threads, and abstraction. Architectural models of distributed systems and their design issues. Mutual exclusion, condition variables, and atomic instructions. Time and synchronization. Distributed algorithms and their models of execution. Consensus and leader election protocols. Distributed file systems. Distributed ledgers. Scalability-enabling techniques: partitioning and replication. CAP theorem. Locking and transactions: 2PL and 2PC. ACID transactions Programming constructs and techniques: sockets programming, remote procedure calls. Fault-tolerance. Logging and crash recovery. Examples of distributed systems: DNS and CND. Hands-on sessions.