He, who lives at the bottom of the well, can see only a part of the sky.
I am currently teaching two master level courses at NTNU:
I am teaching every other year a PhD course:
The objective of this course is to present fundamental concepts, methods and tools to assess and to optimize the performance of complex technical and socio-technical systems using the Python programming language. De facto, it is also an example-driven introduction to Python itself. Its intended audience is students, engineers and scientists working in all engineering disciplines.
Undoubtedly, computer programs play an increasingly important role in all engineering processes. Consequently, engineers and scientists must be familiar with their use and, at least to some extent, with their development. I do believe however that developing large, professional software is the job of professional software developers. Training a professional software developer takes years. It remains that scientists and engineers from all disciplines can take huge benefits of mastering a programming language such as Python. Python can actually help them to achieve a high productivity in many of their daily tasks, including data processing and analysis, chaining modeling and simulation tools, performing specific calculations and simulations, writing reports and web-pages… These tasks can be at least partly automated by writing scripts, i.e. small programs, quickly and easily developed. Writing scripts does not require high competences in mathematics, computer science or software engineering, just to know the basics and to be ready to give it a try. More than that: it proves to be fun.
My objective, with this course, is to provide students in engineering curricula with fundamental knowledge and know-how about Python scripting. I want to show them that they can, using Python, improve their productivity right now, without having to swallow tons of difficult concepts on algorithms, computational complexity and the like.
My book "Performance Engineering in Python" contains many exercises and problems. The pdf file of this book can be found here. Most of these exercises and problems answer concrete questions one has to solve when assessing and optimizing the performance of a technical and socio-technical system. With that respect, this book can be seen as a cookbook, full of recipes that students can reproduce at home, and, more importantly, from which they can take inspiration to prepare gala dinners.
Zip archives containing solutions to exercises are available below.
The systems designed by industry are more and more complex. Not only these products are more and more complex but also the processes by which they are designed/produced/operated/decommissioned and organizations that implement these processes are. To face this complexity, the different engineering disciplines (mechanics, thermic, electric and electronic, software, architecture…) virtualize their contents to a large extent, i.e. they are designing models. We entered the era of: model-based systems engineering. Each system comes with dozens if not hundred of models.
The emerging science of complex systems is the science of models. This science comes with engineering concepts, methods and tools.
When I arrived at Ecole Centrale Paris, in 2013, I have been asked to create a course of complex systems engineering for first year students (which corresponds to third year of university). I decided to design a course of model-based systems engineering that would introduce the students with a panoply of modeling formalisms, methodologies and tools. It resulted the course SE2150 which I give also now at NTNU (with some necessary adjustments) as TPK5120. This course has been also delivered at Centrale Pékin (Beihang University, Beijing, China) by Dr. Michel Batteux and by myself, still at Beihang University, at the school of Reliability and Systems Engineering.
A zip archive containing the slides of earlier versions of the course can be found here.
This course evolved trough the years. It is now focusing on two main domains: model-based system architecture and model-based reliability engineering. I wrote a book to support the course. It can be downloaded here.
Since 2025, I switched both my courses TPK5120 and PKPK8213 onto system dynamics, using the Sigma modeling language and the WorldLab modeling environment as support for practical applications.
System dynamics is a methodology for understanding, modeling, and simulating complex systems, typically aimed at addressing complex problems with interdependent factors, feedback loops, and time delays. Developed by Jay W. Forrester in the late 1950s at the MIT Sloan School of Management, system dynamics uses differential equations to capture and simulate the behavior of systems over time, allowing for the examination of interactions between components within economic, environmental, and organizational systems.
System dynamics is widely known for its application in fields such as business management, environmental studies, and public policy. Models are often built with stock and flow diagrams and causal loop diagrams, which help in identifying feedback structures within systems.
The Sigma modeling language aims at providing a generic, mathematically sound and computationally efficient, way of describing the dynamics of complex systems. Sigma is actually an agnostic, full-fledged object-oriented language, making it possible to represent efficiently the dynamics of a wide range of complex systems, like production lines, logistic chains, maintenance organization, complex projects, natural ecoystems…
WorldLab is an integrated modeling environment dedicated to modeling and simulation of Sigma models.
The 2026 slides of my course can be downloaded here.