Dr. Michael Lehn

Akademischer Oberrat, Institute of Numerical Mathematics, Ulm University

My main interests are numerical mathematics, scientific computing, high-performance computing, and teaching.

A recurring theme in my teaching is understanding computational methods from first principles: from the mathematical algorithm down to its implementation, the programming language, the compiler, and ultimately the machine executing it.

Teaching

My teaching spans both undergraduate and graduate courses, from foundational mathematics and numerical analysis to numerical optimization, scientific computing, and high-performance computing.

In particular, I am interested in teaching programming and computer architecture to mathematics students without treating the computer as a black box. Students should not only learn how to use numerical software, but also understand how such software is implemented and why modern hardware influences the design of numerical algorithms.

Some of my teaching projects therefore deliberately cross the usual boundaries between numerical mathematics, programming languages, compilers, and computer architecture.

Selected courses

  • Numerical Linear Algebra
  • Numerical Analysis
  • Numerical Optimization
  • Numerical Methods for Ordinary Differential Equations
  • Introduction to High Performance Computing
  • High Performance Computing
  • Higher Mathematics for Physics and Engineering

Teaching Projects and Software

ABC and not-abc

ABC is a small C-like teaching language used to introduce programming, memory, compilers, and computer architecture.

Rather than hiding low-level concepts, ABC tries to expose them with a language whose grammar and semantics are considerably smaller and more consistent than C.

not-abc is a self-hosting compiler originating from this course. It demonstrates that a complete compiler frontend can be implemented with surprisingly little machinery.

ULM Generator

The ULM Generator generates a virtual RISC architecture, assembler, debugger, and documentation from a description of an instruction set architecture.

It is used for experimenting with computer architectures and for teaching how instructions, registers, memory, assembly languages, and compilers fit together.

ULM on ICE

ULM on ICE takes the next step from simulation to actual hardware.

Starting from basic digital logic, a small RISC processor is constructed and implemented on an iCE40 FPGA. Students can therefore follow the path from logic gates to a processor executing programs they compiled themselves.

GEMM: From Pure C to SSE Optimized Micro Kernels

GEMM: From Pure C to SSE Optimized Micro Kernels (recently ported from here) is a step-by-step tutorial on implementing high-performance matrix multiplication.

Starting with a straightforward implementation in C, it gradually introduces blocking, packing, register-level kernels, and SIMD instructions, showing how an implementation evolves from a direct translation of the mathematical algorithm into a high-performance GEMM.

The main goal is not merely to obtain a fast implementation, but to understand why these transformations are necessary and how they relate to the processor architecture and memory hierarchy.

ulmBLAS

ulmBLAS grew out of the same approach to teaching high-performance numerical linear algebra.

It is a BLAS implementation that explores how mathematical formulations of linear algebra operations are transformed into implementations that make effective use of modern processors, caches, SIMD instructions, and memory hierarchies.

FLENS

FLENS is a C++ library for numerical linear algebra.

Background

I received a Diplom in Wirtschaftsmathematik from Ulm University and a Master of Science in Applied Mathematics from the University of Southern California.

I received my doctorate from Ulm University in 2008.

Since 2008, I have been at the Institute of Numerical Mathematics at Ulm University, currently as Akademischer Oberrat.

In 2014, I received the Teaching Award of Ulm University for my work on teaching scientific and high-performance computing. In 2026, I received the Lehrbonus of Ulm University.

Contact

Institute of Numerical Mathematics
Ulm University
Helmholtzstraße 20
89081 Ulm, Germany

Room 1.09
Phone: +49 731 50-23534
E-mail: michael.lehn(at)uni-ulm.de