From real-world data to mathematical models.
Explore modelling and system identification through the lens of statistics, optimization, and simulation, supported by practical Python exercises.
Prof. Moritz Diehl, Ashwin Karichannavar, Katrin Baumgärtner
Modelling and System Identification (MSI) is concerned with the search for mathematical models for real-life systems. The course is based on statistics, optimization and simulation methods for differential equations. The exercises will be based on pen-and-paper exercises and computer exercises with Python.
Starting from a simple example of estimating electrical resistance using Ohm’s law, the course explores how to extract model parameters from noisy measurements and assess the uncertainty of the results. Building on foundations in statistics and numerical optimization, we explore least-squares, maximum-likelihood and Bayesian methods as foundational pillars for modelling and identifying systems.
The discussion then extends to recursive estimation and Kalman filtering, showing how a system’s state can be estimated and updated as new measurements are observed. These ideas also underpin many methods in modern machine learning and artificial intelligence, offering a grounded perspective on how models learn from data.
Course language is English and all course communication is via this course homepage.
If you have any questions regarding the exercises/lectures, please send an email to the tutors, syscop.msi@gmail.com
Lectures. The lectures will take place on Mondays and Wednesdays, 8:15 - 09:55 a.m in Building 101, HS 026. If you cannot attend, you may watch the lecture recordings, see below.
Exercises (voluntary). The exercise sheets include both pen-and-paper exercises and programming exercises using Python. Although the exercises are voluntary and are not graded, we strongly recommend working through them regularly in teams of at most three students. You have one week to work on each sheet.
To receive feedback from the tutors, please submit your team’s pen-and-paper and coding solutions by email to syscop.msi@gmail.com. Feedback will only be provided if the solutions were sent before the corresponding deadlines.
Exercise Sessions. During the exercise session, the tutors discuss the exercise solutions. Afterwards there is room for questions on the current exercise sheet.
- Group 1: Wednesday, 14:00 - 16:00, Building 51, SR 00 034, N.N.
- Group 2: Thursday, 14:00 - 16:00, Building 51, SR R 03 026, N.N.
Group 3: Thursday, 10:00 - 12:00, Building 101, SR 01 009/13, N.N.
Written material. The lecture closely follows the script, which can be found below:
- Lecture notes on Modelling and System identification: script
If you missed the first lecture, you can pick up a printout of the script in Building 102, in the cupboard in front of room 00 075.
Please note that we do not cover Chapter 8.4. Additional material that covers some of the lecture contents:
- A script by Johan Schoukens (Vrije Universiteit Brussel, Belgium), which can be found here.
- The textbook Ljung, L. (1999). System Identification: Theory for the User. Prentice Hall. This book is available in the faculty library.
Ilias Course. We provide a forum where you can discuss your questions with your peers or the tutors.
Studienleistung and Final Evaluation
Please make sure you register for both the MSI Exam and the MSI Studienleistung!
The final grade of the course is based solely on a final written exam at the end of the semester. The final exam is a closed book exam, only pencil, paper, and a calculator, and two handwritten double-sided A4 sheets of self-chosen formulae are allowed. The exam will take place on 22.03.2027 at 14:00.
We also offer a Q&A session a few days before the exam. It will take place on TBD. The exam review will take place on TBD.
Microexams. There will be three 45-minute microexams, worth 20 points each (60 points in total). Each will contain ten multiple-choice questions and a few exercise-based questions. Possible variants of these questions will be marked (*) on the exercise sheets.
Project (mandatory). The micro-project is worth 60 points and must be completed in teams of at most three students (preferably the same teams as in the exercises). Teams may choose a topic from a list of suggested projects (to be announced) or discuss their own ideas with the tutors.
The project will be announced (TBD), and the deadline is 31st January.
Teams may present their project during an exercise session. Please arrange this with the tutors and submit a one- to two-page project description at least one week beforehand. All team members should be ready to explain their work, answer questions, and make requested code changes.
Studienleistung. In order to meet the requirements accompanying the course (Studienleistung), one has to obtain at least 60 of the 120 available points across the three microexams and the project combined:
- Microexam 1: covers Exercises 1 - 3 (20 points)
- Microexam 2: covers Exercises 4 - 6 (20 points)
- Microexam 3: covers Exercises 7 - 10 (20 points)
- Project: Deadline 31st January (60 points)
Passing the Studienleistung is a prerequisite for taking the final written exam. The 6 ECTS credits are awarded upon passing both the Studienleistung and the final written exam. The Studienleistung does not contribute to the final course grade, which is determined solely by the final written exam.
To prepare for the written exam, check out the exams from previous semesters: 2019, 2018, 2015, 2014. (Please note that these exams contain questions on Appendix C of the MSI script, which is not covered in this year's lecture)
Solution video for the 2018 exam
Timetable (updated 19.10.2026)
| Date | Session | Recording | Chapters |
|---|---|---|---|
| Mon, 19.10 | Introduction Lecture | Recording | Chapter 1.0 - 1.2 |
| Wed, 21.10 | Lecture | Recording | Chapter 2.0 - 2.3.1 |
| Mon, 26.10 | Linear Algebra Tutorial, Lecture | Recording | |
| Wed, 28.10 | Lecture | Recording | Chapter 2.3.2 - 2.4 |
| Mon, 02.11 | Statistics Tutorial, Lecture | Recording | |
| Wed, 04.11 | Lecture | Recording | Chapter 2.4 - 3.1 |
| Mon, 09.11 | Lecture | Recording | Chapter 3.2 - 4.2 |
| Wed, 11.11 | Lecture | Recording | Chapter 4.3 - 4.4.1 |
| Mon, 16.11 | Lecture | Recording | Chapter 4.5 - 4.5.3 |
| Wed, 18.11 | Lecture | Chapter 4.5 -4.6 Chapter 4.6 - 4.7 | |
| Mon, 23.11, | No Lecture | Recording | Chapter 5 - 5.2.2 |
| Wed, 25.11 | Microexam 1 (8:15 - 9:00), lecture afterwards | Recording | Chapter 5.3 |
| Mon, 30.11 | No Lecture | Recording | Chapter 5.4 - 5.5 |
| Wed, 02.12 | No Lecture | Recording | Chapter 6 - 6.1.2 |
| Mon, 07.12 | No Lecture | Recording | Chapter 6.2 - 6.4 |
| Wed, 09.12 | Lecture | Recording | Chapter 7 - 8.2 |
| Mon, 14.12 | Lecture | Recording | Chapter 8.2 - 8.5 |
| Wed, 16.12 | Lecture | Lecture | Chapter 8.6 |
| Mon, 21.12 | Lecture | Recording | Chapter 8.7 |
| Wed, 23.12 | Lecture | Recording | |
| Mon, 04.01 | No Lecture | ||
| Wed, 06.01 | No Lecture and no exercise sessions in this week | ||
| Mon, 11.01 | Lecture | Recording | Proof of C-R-Inequality (Chapter 5.4.1) |
| Wed, 13.01 | Microexam 2 (8:15-9:00) Lecture afterwards | Recording | |
| Mon, 18.01 | Lecture | Recording | |
| Wed, 20.01 | Lecture | Recording | |
| Mon, 25.01 | Lecture | Recording | Summary Chapters 1 - 4 |
| Wed, 27.01 | Lecture | Recording | Summary Chapter 5 |
| Mon, 01.02 | Lecture | Recording | Summary Chapters 6 - 8 |
| Wed, 03.02 | Lecture | ||
| Mon, 08.02 | Microexam 3, (8:30 - 9:15), lecture afterwards | ||
| Wed, 10.02 | Summary Lecture + Q&A Session Coffee at Syscop Office with Tutors after the lecture (Starting time 8:30) | ||
| TBD | Final Exam |
Tutorials
In the first weeks, there is no mandatory exercise sheet, but if you don't feel too confident about your linear algebra and statistics skills, you might want to check out these tutorials that cover the basics needed for the MSI course.
- Python Tutorial - for more information see the paragraph below
- Linear Algebra Tutorial
- Statistics Tutorial
In the first weeks, we will discuss these tutorial also in the lecture and the exercises.
Exercises Sheets
| Sheet | code files | Deadline |
|---|---|---|
| Sheet 0: Introduction | Download zip | 26.10 |
| Sheet 1: Resistance Estimation Example | Exercise 1 Github link | 02.11 |
| Sheet 2: Statistics + Parameter Estimation | Click to accept Exercise 2 | ... |
| Sheet 3: Optimality Conditions and Linear Least Squares | Click to accept Exercise 3 | |
| Sheet 4: Regularized, Ill-Posed and Weighted Linear Least-Squares | Click to accept Exercise 4 | |
| Sheet 5: Maximum Likelihood and MAP Estimation | Click to accept Exercise 5 | |
| Sheet 6: Recursive Least Squares | Click to accept Exercise 6 | |
| Sheet 7: Dynamic Systems | Click to accept Exercise 7 | |
| Sheet 8: Nonlinear Least Squares | Click to accept Exercise 8 | |
| Sheet 9: KF + KF Identification | Click to accept Exercise 9 | |
| Sheet 10: EKF | Click to accept Exercise 10 | ... |
The exercise workflow looks as follows:
- Download the exercises.
- Work locally locally onto your computer or private git repos.
Check your solutions by running
pytest
in the console.
- For feedback on the code, email the zip folder.
Python For the programming exercises we use Python. To work on the exercises please make sure to have Python installed on your system.
Python Installation
Here is a short guide on how to set up Python along with the IDE VS Code. If you already have Python installed on your system or want to use another IDE, feel free to skip to bullet 4.
- Install Python for your operating system
- Install VS Code
- Install the Python Extension for VS Code
- Install the required python packages:
- Start a terminal
Type and press enter:
pip install numpy scipy matplotlib pytest
Python Tutorial Notebooks
For people who do not know Python or want to refresh their knowledge, we provide a series of Jupyter notebooks to give you an introduction to data science programming in python. More resources, such as video tutorials for Python can be found online.
Download and unzip the Tutorial Notebooks into a folder of your choice
Open the folder in VS Code (File -> Open Folder)
Open the first Notebook by going through the file tree (notebooks/1-basics/PY0101EN-1-1-Hello.ipynb)
2018 Lecture Recordings
| date | topic | chapters |
|---|---|---|
| October 20 - October 22 | Lecture 1: Introduction + Resistance Estimation | 1-1.2 |
| October 26 - October 30 | Lecture 2: Resistance Estimation + Statistic Basics | 1.2.2-2.3 |
| November 03 - November 05 | Lecture 3: Random Variables + Statistical Estimators | 2.3-2.4 |
| October 31 - November 4 | Lecture 4: Resistance Estimation Revisited | 2.5-3.1 |
| November 7 - November 11 | Lecture 5: Optimization Basics + Linear Least Squares | 3.1-4.2 |
| November 7 - November 11 | Lecture 6: WLS + Ill-posed Problems | 4.3-4.4.1 |
| November 14 - November 18 | Lecture 7: Statistical Analysis of WLS | 4.5-4.7 |
| November 14 - November 18 | Lecture 8: Maximum Likelihood Estimation | 5-5.1.1 |
| November 21 - November 25 | Lecture 9: MAP Estimation + Recursive LLS | 5.2-5.3.2 |
| December 5 - December 9 | Lecture 10: Cramer Rao Bound (the part on Section 5.4: Cramer Rao Bound starts at 38min) (Section 5.4.1: Proof of Cramer Rao Bound. Note that the proof is not required for the exam) | 5.3-5.4 |
| December 12 - December 22 | Lecture 11: Practical Solution of NLS | 5.5. |
| January 9 - January 13 | Lecture 12: Dynamic systems (Part1, Part2, Part3) (2,5 hours in total) | 6.1-6.1.2 |
| January 16 - January 20 | Lecture 13: Output and Equation Errors (1h) | 7.1-7.3 |
| January 23 - January 27 | Lecture 14: State Space Models (0,5h) | 7.4 |
| January 23 - February 27 | Lecture 15: RLS + Kalman Filter (1h) | 9.1-9.3 |
| January 30 - February 3 | Lecture 16: Extended Kalman Filter (1h) | 9.5 |
| January 30 - February 3 | Lecture 17: Moving Horizon Estimation (1,5h) |