Pt. I. Evolution of Parallel Computing -- 1. Serial Scalar Processor -- 2. Vector and Superscalar Processors -- 3. Shared Memory Multiprocessors -- 4. Distributed Memory Multiprocessors -- 5. Networks of Computers: Architecture and Programming Challenges -- Pt. II. Parallel Programming for Networks of Computers with MPC and HMPI -- 6. Introduction to mpC -- 7. Advanced Heterogeneous Parallel Programming in mpC -- 8. Toward a Message-Passing Library for Heterogeneous Networks of Computers -- Pt. III. Applications of Heterogeneous Parallel Computing -- 9. Scientific Applications -- 10. Business and Software Engineering Applications -- App. A. The mpC N-Body Application -- App. B. The Block Cyclic Matrix Multiplication Routine for Heterogeneous Platforms -- App. C. The Parallel Adaptive Quadrature Routine -- App. D. The mpC User's Guide