Helps readers learn the craft of designing and building parallel programs - specifically programs that employ multiple processors operating at once to solve a large computational problem. This book addresses techniques for parallel programming on both major categories of parallel computers - SMPs and clusters.