Multi-processor systems dominate the computer market. In order to realize the full capabilities of hardware systems, programmers must learn to arrange software programs so that they can perform multiple computations simultaneously. By maximizing parallelism, a system can achieve higher performance. Different parallelization technologies provide specific benefits for certain applications. This manual highlights different parallelism methods and experimental data comparison. The experimental applications include arithmetic calculations, sorting data, and graphical animations. Also provided are steps to set up parallel programming environments, parallel algorithms, and compile-able source codes. Parallel technologies including shared memory, distributed memory, and heterogeneous computational devices are discussed thoroughly in this book.