## Advanced Programming

The course aims to provide advanced knowledge of both theoretical and practical programming in C++11 and Python3, with particular regard to the principles of object-oriented programming and best practices of software development.

**Syllabus:**

## Numerical Solution of PDEs Using the Finite Element Method

**The Finite Element Method Using deal.II** This is an intensive course that teaches how to use the finite element library deal.II (www.dealii.org).Prerequisites: you should be familiar with C/C++, and with the Unix command line. We'll cover the basics of Finite Element Methods, and go from solving the Laplace equation on a uniformly refined grid, to solving the same equation using adaptively refined grids, in parallel, on a supercomputer.Lectures will be structured in the following way:

## Advanced Finite Element Analysis

An advanced course dedicate to the analysis of finite element methods, as found in modern numerical analysis literature. A basic knowledge of Sobolev spaces is expected

Detailed program

A priori estimates (4h)

- Lax Milgram Lemma
- Cea’s Lemma
- Bramble Hilbert Lemma
- Inverse estimates
- Trace estimates

Stabilization mechanisms (2h)

## Reduced Order Methods for Computational Mechanics

The course aims to provide the basic aspects of numerical approximation and efficient solution of parametrized; PDEs for computational mechanics problem (heat and mass transfer, linear elasticity, viscous and potential flows) using reduced order methods.

## Advanced Programming

Provide advanced knowledge of both theoretical and practical programming in C ++ and Python, with particular regard to the principles of object oriented programming and best practices of software development (advanced use of version control systems, continuous integration, unit testing).

**Syllabus:**