Introduction to Parallel Algorithms and Architectures