You are here

Theory and practice of Finite Element Methods

Course Type: 
PhD Course
Academic Year: 
March - June
40 h

This is a shared course between the SISSA PhD track
on Mathematical Analysis, Modeling, and Applications
( and the Master in High Performance Computing
( It is a course that follows two parallel lines:
theory of finite element methods (graduate students level, ~20 hours) and
practice of finite element methods (mhpc students levels, ~20 hours).

The goal of the course is to provide to the students advanced
analysis tools for finite element methods, as well as 
state-of-the-art programming knowledge for the actual implementation part.

The theory ranges from basic FEM and functional analysis arguments, like
Lax-Milgram, Cea, and Bramble Hilbert lemmas, to more advanced topics,
like inf-sup conditions and a-posteriori error analysis.

The goal of the practice part is to enable a PhD or MHPC student working on
numerical analysis of PDEs to implement a state-of-the-art adaptive finite
element code, that runs in parallel, using modern C++ libraries. The 
implementation will be based on the `deal.II` library (

What you will learn:

  • Advanced Finite Element theory
  • How to use a modern C++ IDE, to build and debug your codes
  • How to use a large FEM library to solve complex PDE problems
  • How to properly document your code using Doxygen
  • How to use a proper Git workflow to develop your applications
  • How to leverage GitHub actions, google tests, and docker images to test and deploy your application
  • How hybrid parallelisation (threads + MPI + GPU) works in real life FEM applications

Useful links

Course classroom on GitHub (for assignments/exercises)

Course slides, notes, materials, and codes:

Course recordings:

Implementation will be done using the deal.II library (

Zoom (sign in to get password)
Next Lectures: 

Sign in