An online graduate-level course in Uncertainty Quantification (UQ), covering propagation of uncertainty through simulation codes, stochastic inversion/calibration of models, and connections to machine-learning.

dr. R.P. Dwight <r.p.dwight@tudelft.nl>
dr. A.-K. Doan <n.a.k.doan@tudelft.nl>
Part of the MSc Aerodynamics Track, TU Delft

This course is an introduction to the numerical-statistical field of "Uncertainty Quantification" (UQ), demonstrated with applications to computational models based on PDEs, especially CFD. The course is taught in an MSc at TU Delft, April-June, but open to all.

Prerequisites: a) a first course on probability/statistics (though we give a brief refresher in Week I), b) a first course in numerical analysis, and c) a familiarity with numerical solution of PDEs. In addition numerical exercises will be done in Python - some programming experience is necessary.

Topics: UQ is a broad heading, and we will cover specifically:

In each case we will look at the motivation, problem statement, solution methods, and interpretation of results. An emphasis will be placed throughout on the Bayesian framework for inverse problems.

Structure: The course is taught in 7 weeks, each week there are recorded lectures (see next tab), an in-person inverted classroom (Tuesday afternoons, 13:45-15:30 in LR CZ-J). For each part of the course there is a programming tutorial, in which the theory is applied. The exercises use Python in Jupyter notebooks. Each should take ~3-6 hours depending strongly on your programming (and Python/numpy) experience.

These lectures are the way you should approach the material first. Supporting reading from Smith is listed below each video. Attempt the corresponding tutorial after watching the lectures. Advanced material (from a previous version of the course): Recordings of the in-person lectures/inverted classrooms:

The tutorials are in the form of IPython notebooks:

For those taking the course at TU Delft in Q4, deadlines for the tutorials are: These can be worked through on your own laptop with a complete scientific Python install (numpy, scipy, ipython, matplotlib, etc.). Installing Anaconda with Python 3 will get you all this, and is recommended.

The tutorials make heavy use of numpy, which is the standard Python module for working with arrays, matrices, etc., and scipy which is the standard Python module for numerical and statistical primitives. If you have used Python, but not numpy before, then I strongly recommend reading:

For those with no programming experience at all - this course may not be for you; but you can try following Codecademy to get a start with Python.

To ensure easy access to a correctly setup Python environment for TU Delft students I've setup a server at: https://ipython.lr.tudelft.nl:8888. The port number is important!!! Your username is your NetID, and your password will appear in Brightspace GradeCenter. The notebooks are available in your home-directory. Moreover, on this server you can run the notebooks from within any browser, make modifications, plots, etc. Please just bear in mind that your code is not running locally, but on the server, which has limited capacity. So please don't perform long-running computations (or bitcoin mining!).

In this course we use Ralph C. Smith's Uncertainty quantification: Theory, implementation, and applications, as a supporting text. Please find a copy before the course starts. We don't follow Smith closely, but if Smith covers the material, I will always reference the appropriate section below the corresponding video.

Additional texts for specific parts of the course are:

For machine-learning aspects of the course: Approach me for further reading material for specific interests.

Interactive classes (in the form of inverted classrooms) will be held on Tuesday afternoons. The idea is that you've already watched the corresponding videos and attempted the tutorial. I'll give a short introduction, and then we'll discuss questions/problems, etc. Feel free to bring other interesting ideas, reading material, and questions related to the topics of the course.

The course grade will be based 100% on an oral exam. In order to be eligible for the oral, you have to have (at least) attempted all the Python tutorials. These projects may be done alone or in pairs - orals are individual. The oral will be by preference in-person on-campus, unless you are really unable to attend in which case online is possible. We may ask questions on any part of the course. I will set aside a week, likely Week 4.10 in which orals can be scheduled.

Tutorials are due at regular intervals during the Quarter, and grades will be posted within a couple of days.

dr. R. Dwight ≤r.p.dwight@tudelft.nl≥ - April 2022

I've received from lecturers, a few requests for tips on how to make the kind of maths videos seen e.g. here. Since my lectures are quite maths-heavy, I took inspiration on style from Khan academy. I'm using Linux (Ubuntu), but for most of the software below there are Windows/MacOS versions.

Finding a setup that works well was quite a lot of effort, you'll need:

The drawing program and screen recorder are completely independent, and generally easy to find. Finding a working video editor was most tricky.

For drawing I just tried a few until I found one I liked. I looked for ones with customizable backgrounds (I wanted black), and keyboard-shortcuts for changing pen, erasing, etc., and found:

My screenrecorder, the only requirement is that it works. Having a keyboard shortcut for starting and stopping saves time editing off the beginning and ends of the videos:

And only after a lot of searching did I find an editor that worked well (some deleted sound, some cut at the wrong place, one took ~1 hour to save a video, all sorts of problems). This one is fine for cutting and combining videos, which is all I need:

And I save the result in MP4 containers, which means they play natively in most (all?) browsers.

A special thanks to the developers of all these tools - this wouldn't have been possible without you!!!