High-Performance Computing

Module aims

This course provides students with an intermediate proficiency in the use of the C++ programming language and the skills to be able to write efficient parallel programs. It will include an introduction to parallel programming as well as cover the use of software engineering tools and best practices, such as debuggers, unit testing and version control.

Learning outcomes

On successfully completing this course unit, students will be able to:

  • Write their own parallel program in C++;
  • Use abstract data types in designing and implementing efficient solutions;
  • Use compilers, debuggers, version control and developing test suites.

Knowledge and understanding

  • Knowledge of the syntax of the compiled programming language C++.
  • Knowledge and understanding of object-oriented programming.
  • Knowledge and understanding of parallel programming concepts and their relation to the underlying computer hardware.

Skills and other attributes

  • Develop their problem-solving skills and the use of numerical methods.
  • Gain proficiency at the use of an advanced programming language.
  • Develop an understanding of object-oriented and parallel programming.
  • Improve their creativity and computing skills

Module syllabus

  1. C++ programming language including basic syntax and control statements, basic input/output to screen and file and the use of compilers.
  2. Core data structures, including as vectors, maps and algorithms, such as sorting and searching. 
  3. Object-oriented programming paradigms including classes, the use of class inheritance, polymorphism and the use of virtual functions to override behaviour in derived classes.
  4. Parallel programming models for single node and cluster computers, including MPI.
  5. Introduction to scientific programming libraries (BLAS, LAPACK, Boost)
  6. Development platforms and debugging tools for identifying functional errors in software.
  7. Discussion of coding standards, software testing and the use of version control for managing code and development as part of a larger team.
  8. Broad range of engineering applications including basic numerical methods for solving partial differential equations.
 

Pre-requisites

AERO40003 Computing and Numerical Methods 1


 

Teaching methods

Demonstrations / hands-on lab sessions

Assessments

Assessment is through class tests (25%) and a final  piece of coursework (75%) at the end of the module.

Reading list

Core