The Review I wrote for Amazon.com on References:
Clusters of Computers have become an appealing platform for
cost-effective parallel computing and more particularly so for
teaching parallel processing. At Monash University School of
Computer Science and Software Engineering, I am teaching "CSC433:
Parallel Systems" subject for BSc Honours students. The course
covers various communication models and languages for parallel
programming. Cluster Computing is one of the focused topics of
this course and I found two books that suits well for this
course--both published by Prentice Hall in 1999. The first one is:
"High Performance Cluster Computing" by R. Buyya (editor) that I
use for teaching cluster computer architecture and systems issue.
The second one is "Parallel Programming" by B. Wilkinson and M.
Allen that I use for teaching programming clusters using
message-passing concepts. I found both books complimentary to each
other.

B. Wilkinson and M. Allen book discusses key aspects of
parallel programming concepts and generic constructs with practical
example programs. Each concept has been explained using figures and
flow diagrams. The programs illustrated mostly in C using generic
parallel programming constructs and popular parallel programming
interfaces such as Threads, PVM, and MPI. The authors have also
created an excellent web resources home page that offers
presentation slides, program source codes, and instructors manual.
All these tools make teaching parallel programming course, a
pleasing experience. I have no hesitation in recommending this book
for anyone serious about teaching parallel programming on clusters.