The course discusses programming techniques required to efficiently utilise parallel computing in a computational research project in science or engineering. The course will discuss shared memory and distributed memory parallelisation in a C, C++ and Fortran context. Widely utilised parts of the application interfaces of OpenMP and MPI will be introduced during the course. The course will discuss commonly encountered issues in parallel programming, such as data-races and dead-lock and show techniques required to avoid these issues.