Distributed and Concurrent Algorithms
This course offers an in-depth exploration of algorithms that operate in distributed systems and concurrent environments. As the digital world grows increasingly complex, the need for efficient, reliable, and scalable algorithms to manage, process, and analyze data across multiple computing nodes has never been more critical. This course addresses this need by delving into the core principles, methodologies, and challenges associated with distributed and concurrent computing.
To provide an understanding of the fundamental concepts and principles of distributed systems and concurrent algorithms.
To develop a strong foundation in the design and analysis of algorithms that run in a distributed or concurrent setting.
To teach students how to identify and solve problems in real-world applications using distributed and concurrent algorithms.
To prepare students for research and development in the field of distributed and concurrent algorithms.
To provide hands-on experience in implementing and evaluating distributed and concurrent algorithms through laboratory projects and programming assignments.
The following are the short list of course references (but not all)
Introduction to Distributed Algorithms by Gerard Tel.
Distributed Systems: Principles and Paradigms by Andrew Tanenbaum and Maarten van Steen.
Distributed Algorithms by Nir Shavit and Nancy Lynch.
Concurrent Systems: An Integrated Approach to Operating Systems, Database and Distributed Systems by Jean Bacon and Morris Sloman.
The Art of Multiprocessor Programming by Maurice Herlihy and Nir Shavit.
Distributed and Concurrent Algorithms by Mahmmoud Mahdi (v1.7.2)
Note: This is just a expected curriculum, and the specific content and objectives may change. Additionally, some topics may need to be covered in more depth, while others may need to be covered more briefly, based on the needs and skills of students.