This is an introduction to the field of efficient parallel algorithms and to the techniques for efficient parallelisation. It is self-contained and presumes no special knowledge of parallel computers or particular mathematics. The book emphasises designing algorithms within the timeless and abstracted context of a high-level programming language rather than within highly specific computer architectures. This is an approach which concentrates on the...