Introduction to Parallel Algorithms and Architectures: Arrays, Trees, Hypercubes