Course Name: Parallel & Distributed Computing
Course Code: CS-403
Credit Hours: 3
Prerequisites: Operating Systems
Objective: This course covers abstractions and implementation techniques for the design of distributed
systems. At the end of this course students will be familiar with the design and implementation issues
of distributed systems. Studying the core ideas behind modern coordination and communication
paradigms and distributed data structures. Introduce a variety of methodologies and approaches for
reasoning about concurrent and distributed programs
Outcomes: To be able to:
Distinguish the theoretical and conceptual foundations of distributed computing.
Recognize the inherent difficulties that arise due to distributed-ness of computing resources.
Recognize the feasibilities and the impossibilities in managing resources.
Identify the problems in developing distributed applications.
Course Outline:
Introduction to Parallel and Distributed Systems, Software Architectures: Threads and Shared memory,
Processes and Message passing, Distributed Shared Memory (DSM), Distributed Shared Data (DSD).
System Models, Networking and Internetworking, Communication Models and Abstractions (Message
passing, stream-oriented communications, remote procedure calls, remote method invocation),
Naming in Distributed Systems, Concurrency and Synchronization, Process Synchronization,
Distributed Transaction and Concurrency Control, Distributed Data Replication, Security and Access
Control, Overview of Web Services, Cloud Computing.
Reference Materials:
1. Distributed Systems: Principles and Paradigms, Andrew S. Tanenbaum and Maarten van Steen.
Prentice-Hall, 2002.
2. Distributed Systems: Concepts and Design by 4th edition, George Coulouris, Jean Dollimore and
Tim Kindberg. Addison-Wesley, 2005
3. Web Services: Principles and Technology. Michael P. Papazoglou. Pearson Prentice Hall, 2007.