This document provides an overview of parallel computing. It discusses why parallel computation is needed due to limitations in increasing processor speed. It then covers various parallel platforms including shared and distributed memory systems. It describes different parallel programming models and paradigms including MPI, OpenMP, Pthreads, CUDA and more. It also discusses key concepts like load balancing, domain decomposition, and synchronization which are important for parallel programming.