Skip to main content

Unit information: Principles of Numerical Analysis and Research Software Development in 2020/21

Please note: you are viewing unit and programme information for a past academic year. Please see the current academic year for up to date information.

Unit name Principles of Numerical Analysis and Research Software Development
Unit code AENGM0071
Credit points 10
Level of study M/7
Teaching block(s) Teaching Block 1 (weeks 1 - 12)
Unit director Dr. Macquart
Open unit status Not open

Prior knowledge of linear algebra and partial differential equations.



School/department Department of Aerospace Engineering
Faculty Faculty of Engineering

Description including Unit Aims

The unit will introduce students to programming concepts and how best to apply them to the successful analysis of composites with a research focus. It assumes no prior experience of computer programming as this unit is aimed at students from a variety of backgrounds. Programming skills will be developed through completing a wide range of exercises covering commonly encountered numerical analysis techniques. The project culminates with the application of several analysis techniques to understand the behaviour of composite structures. Here, they are required to report on the advantages/limitations of these approaches. Throughout the course the students will be exposed to “best practice” regarding software development and the use of high-performance computing and research data storage. Validation and critical evaluation of their own code, and evaluation of their peer’s coding, is built into the assessment format to highlight its importance.

The unit will comprise of self-paced learning working through a series of well-documented examples. These will be supported by seminar type sessions where key aspects of the numerical techniques are discussed. Students will be directed towards online tutorials and documentation in order to support the development of self-study skills. As part of their preparations for conducting research the students will attend seminar sessions covering version control, the use of HPC facilities, and managing their data storage.


1) Upon completion students will have a good understanding of the fundamentals of programming demonstrated through practical examples, as well as their ability to develop codes collaboratively as part of a self-organised small group.

This will be achieved through understanding of and implementation of several coding task covering the following:

  • How to think like a computer? (Designing Algorithm)
  • Fundamental coding syntax.
  • Knowledge of data types/structures.
  • Application of loops, functions, conditional statements.
  • Controlling data input and output.
  • Program structure – modularization.
  • Validation of code, e.g. unit testing and experimental correctness.
  • Utilisation of version control and collaborative project management, including code review.
  • Data storage and use of the research data storage facility.
  • Use of high-performance computing facilities and its implications on code structure, e.g. parallel programming.

2) Upon completion students will have reviewed the basis of good engineering report writing, with application using LaTeX and Overleaf, i.e. how to build the report from a blank page, including content, structure, formatting of tables, and figures, amongst others.

3) Upon completion students will be able to apply a vast range of numerical analysis methods in order to reformulate and solve analytical problems, numerically. Said methods includes:

  • Computational linear algebra (e.g. least squares)
  • Root finding.
  • Numerical quadrature / integration.
  • Finite difference / numerical derivative
  • Finite elements

4) The student will be able to analyse simple composite structures using several different numerical techniques. Provide justification for the numerical techniques used to highlight the limitations/advantages of each approaches. In doing so students will need to appraise the underlying mathematics. They will gain knowledge of how to present critical analysis in a collaborative manner. To aid in completing these broader goals the students will consider the following topics:

  • Classical laminate analysis
  • Abaqus
  • Initial Value Problems.
  • Differential Quadrature Method.
  • Principles of Optimisation.
  • Comparison of analysis techniques – balancing competing requirements

Intended Learning Outcomes

Upon successful completion of this unit students will be able to

  1. Give examples of / and apply coding fundamentals.
  2. Develop and review codes for individual and collaborative projects.
  3. Solve analytical problems using numerical methods.
  4. Model and analyse simple structures and composite laminates.
  5. To synthesize numerical analysis results and demonstrate technical report writing ability.

Teaching Information

This unit will comprise of 8-10 hours lectures.

Assessment Information

100% Coursework

Reading and References

  • Documentation from Advanced Computing Research Centre
  • Online documentation e.g. Mathworks, Python Software Foundation, Overleaf.
  • Hahn, B. (2016) Essential Matlab for Engineers and Scientists Academic Press
  • Attaway S. (2017) MATLAB: A Practical Introduction, Butterworth- Heinemann 9780128045251