An Introduction to 'Real-World' Algorithmic Differentiation (AD)


Through a combination of lectures and hands-on practicals, this course provides an introduction to the application of Algorithmic Differentiation (AD) and adjoint methods. Topics covered in the lectures include: an introduction to first-order AD and second-order AD; hand-coding of first-order tangents and adjoints; obtaining tangents and adjoints with dco/c++ or dco/Fortran. 

In addition, advanced techniques (checkpointing; exploitation of sparsity and concurrency; pre-accumulation, etc) often required to get production adjoint codes to run at all are also covered in detail.  The course ends with a workshop session where attendees are encouraged to bring/discuss their own codes and are helped to develop tangent and adjoint versions of these.

Aimed at:

Anyone interested in using Algorithmic Differentiation techniques.


C++ or Fortran


2 day or 3 day versions available.

After Course Attendees Will:

Understand first, second and higher order AD, tangent and adjoint models and the key differences between them, and when adjoint methods are appropriate.  They will also have a thorough appreciation for what is involved in producing tangent and adjoint versions of production codes, where the problems are likely to arise and how to work around them.  Attendees will have produced tangent and adjoint codes both written by hand and obtained by dco/c++ or dco/Fortran, and will consequently understand why such tools were created and what benefits they offer.

Please email us if you would like more details about this course.