Real-Time Programming Languages [WS only]

Embedded systems in a safety-critical context, e.g., controllers in automobiles, software in airplanes and industrial plants, have to work reliably and under timing constraints. Such systems require a level of integrity and availability for which traditional mainstream programming techniques fail to provide appropriate means, or even guarantees. As a result, programming languages with strict semantics and inherent support for timing were developed. They introduce programming models specifically targeted towards developing safety-critical and real-time systems. The aim of this module is to introduce the basic principles for programming such real-time systems, and to gain practical skills with relevant programming languages and verification tools.

First we study why real-time software substantially differs from Desktop applications, and how the development workflow has to be different from Desktop applications. Then we introduce the predominant real-time programming paradigms and highlight their differences. For each of the paradigms we learn the basics of one programming language, in which we solve various programming tasks in the lab. Finally, we explain the theory of functional and temporal verification of real-time software. In this process, we gain a deep understanding how the architectural features of the target platform influence both the temporal and functional correctness of the software, and how both can be analyzed and formally proved.

This module's word cloud (created by participants of WS17/18)


  • Ada/SPARK programming language (here)
  • Esterel programming language (here)


Time slots: Tuesday, 10:30 - 13:00 (lecture room 3999) and 14:00 - 16:30 (lab/tutorial, 0509 4th floor).


Contents Lecture Contents Lab
17/10/17 Introduction Esterel (1) lecture!
24/10/17 Workflows for Real-Time Systems and Lab Introduction Esterel: basics
31/10/17                    No lecture, no lab (public holiday)
07/11/17 Esterel (2) Esterel: advanced
14/11/17 Model Checking (starts 11:30)
Esterel: verification


Synchronization & Scheduling Processes
28/11/17Ada: Basic ElementsAda: Basics
05/12/17 Ada: Tasking & Synchronization Ada: Advanced


Ada: High-Integrity Systems Ada: Ravenscar examples


Ada: Verification / SPARK Ada: Verification


no lecture Esterel: using reactive Kernels


Computer Architecture (1) Computer Architecture (2) lecture!
23/01/18 Timing AnalysisWCET: Esterel vs. C (vs. Ada)
30/01/18 Q & A: Please bring lab
06/02/18 Final Exam no lab


The final grade is composed of the following two components: - homework (40%): implementation tasks with the programming languages presented in the lecture, to evaluate whether students are able to develop simple software programs in each of the programming paradigms and whether they are able to use verification tools in practice. The homework consists of source codes to be submitted, and an associated report that explains the solution and how verification was applied. - written exam (60%): The written exam evaluates whether the students are able to differentiate between real-time and general-purpose systems, characterize different real-time programming paradigms, are able to describe the theoretic foundations of the verification techniques, and whether they are able to identify sources of variance of execution time on a given processor. The tasks are a mixed collection of calculation tasks, definition/explanation tasks, code interpretation tasks and multiple choice questions.


Note: Scheduled contents may change without prior notice.

We are a member of the GNAT Academic Program of AdaCore