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.

Course Material

Lecture Slides, reading materials, exercises etc. are now available on Moodle! A TUMOnline account is required to access the e-learning course. If you do not have a TUMOnline login, please contact me.

Schedule

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

Date

Contents Lecture Contents Lab
17/10/17 Introduction Introduction
24/10/17 Esterel (1) Esterel: basics
31/10/17                    No lecture, no lab (public holiday)
07/11/17 Esterel (2) Esterel: advanced
14/11/17 Model Checking
Esterel: verification

21/11/17

Synchronization & SchedulingEsterel: using reactive Kernels
28/11/17Ada: Basic ElementsAda: Basics
05/12/17 Ada: Tasking & Synchronization Ada: advanced

12/12/17

Ada: High-Integrity Systems Ada: Ravenscar examples

19/12/17

Ada: Verification / SPARK Ada: verification

09/01/18

Computer Architecture (1) TBD

16/01/18

Computer Architecture (2) & Timing Analysis WCET: Exercises
23/01/18 Timing Analysis (2)WCET: Esterel vs. C (vs. Ada)
30/01/18 Q & A: Please bring questions.no lab
06/02/18 Final Exam no lab

Note: Scheduled contents may change without prior notice.




We are a member of the GNAT Academic Program of AdaCore