Design of Algorithms For Multi-processor Systems, and Analysis Of Their Complexity, Study of Basic Problems in Such Systems, Lower Bounds and Impossibility Results. Mutual Exclusion and Resource Allocation, Agreement Problems (byzantine Generals Problem, Approximate Agreement, Etc.), Clock Synchronization and Logical Clocks, Broadcast and Multicast, Lock-free Synchronization And Concurrent Data Structures. At The End of The Course, The Student Will Be Able To# 1. Understand The Main Models For Distributed Systems and Know Their Main Design Principles. 2. Design Distributed Algorithms and Prove Their Correctness 3. Prove Lower Bounds and Impossibility Results For The Solution Of Key Problems in Distributed Computing.

Faculty: Computer Science
|Undergraduate Studies |Graduate Studies

Pre-required courses

234247 - Algorithms 1


Parallel course

236343 - Theory of Computation


Semestrial Information