Understanding parallel programming techniques and languages, how algorithms map to and behave on high performance computing platforms, and how to design, develop, analyse, and implement parallel and locality-efficient algorithms that run on high performance computing infrastructure.