Distributed Computing is a good course to understand how shared memory and shared processing work. As we know shared things have great importance in future, so this course is helpful for those who want to adapt distributed processing as profession. 

Things you will cover in this  course:

  • Why use parallel and distributed systems?
  • Why not use them? Speedup and Amdahl's Law,
  • Hardware architectures:
  • multiprocessors (shared memory),
  • networks of workstations (distributed memory),
  • clusters (latest variation).
  • Software architectures:
  • threads and shared memory,
  • processes and message passing,
  • distributed shared memory (DSM),
  • distributed shared data (DSD).
  • Parallel Algorithms,
  • Concurrency and synchronization,
  • Data and work partitioning,
  • Common parallelization strategies,
  • Granularity,
  • Load balancing,
  • Examples: parallel search, parallel sorting, etc.
  • Shared-Memory Programming:
  • Threads, Pthreads, Locks and semaphores,
  • Distributed-Memory Programming:
  • Message Passing,
  • MPI, PVM.
  • Other Parallel Programming Systems,
  • Distributed shared memory,
  • Aurora:
  • Scoped behavior and abstract data types,
  • Enterprise: Process templates. Research Topics.

Reference material:

1.  “Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers, 1/e”, B. Wilkinson and M. Allen. Prentice Hall, 1999.

2. “Advanced Programming in the Unix Environment”, W. Stevens, Addison Wesley, 1993.

Other Information:

Course code:  a

Prerequisites:  None

Credit Hours:  3

Lectures: 3

Labs:      0