When we think about processor intensive applications, we think about parallel computing. This book discusses what parallel computing is and how it can be achieved. Parallel computing cannot be achieved by hardware or software alone, but by a combination of these two. At the lowest level, this book describes the operating system characteristics that are necessary to achieve parallelism. At the programming level, we must have an algorithm that maps tasks to different processors and executes them simultaneously. Another important aspect of parallelism is parallel hardware. Parallel hardware has the capability to execute multiple instructions simultaneously. Thus parallel hardware, operating system, and parallel algorithm together form a parallel system capable of achieving parallelism. Computing cost is another aspect of parallel computing. While developing a parallel algorithm, it is necessary to make sure that its cost is optimal. This book discusses all these aspects of parallel computing alongwith cost optimal algorithms with examples to make sure that students get familiar with it. After reading this book a student should have enough knowledge to develop his own parallel algorithm for a given problem.