Recent progress in VLSI provides massive parallelism but general purpose parallel computers remain elusive due to limited communications performance. This book proposes a new high level approach to programming that addresses the pragmatic issue of how a computation is distributed across a machine.