The student performs a set of experiments to gain skills in developing parallel programs and using parallel hardware and parallel development environments. The student learns how to effectively use parallel hardware and tackle parallel processing issues such as partitioning, coordination, and communications. The development environments include threads library, OpenMP, MPI, and CUDA.