The document provides an introduction to parallel computing and parallel programming. It discusses Moore's Law and the need for parallelism to continue increasing performance. It outlines some common parallel architectures like SIMD and MIMD. It also describes different parallel programming models including message passing and shared memory, and different parallel algorithm patterns such as data parallel, task graph, and master-slave models. Finally, it briefly introduces MapReduce as a parallel programming paradigm.