Real-Time Programming Languages [WS only]
Most embedded systems — starting from controllers in automobiles to large-scale software in airplanes and industrial plants — have to work under certain real-time constraints. Such systems require a level of integrity and availability for which traditional mainstream programming techniques fail to provide guarantees. As a result, programming languages with strict semantics and inherent support for timing were developed, which bring abstractions specifically targeted towards developing safety-critical 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 why the development workflows have to be different from those for 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 real-time 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 formally proven.
Note: Schedule may change without prior notice.
|Contents Lecture||Contents Lab|
|14/10/14||Lab Introduction||Basic Esterel|
|21/10/14||Esterel (1)||Esterel contd.|
|Esterel (2) ||Esterel contd.|
|no lecture & no lab because of SVV |
|Model Checking||MC in Esterel|
|Computer Architecture||WCET Demo|
|WCET Analysis||WCET in Esterel, Compiling Esterel|
|Ada: Basic Elements||Basic Programs|
|Ada: Tasking & Synchronization||Tasking & Synchronization|
|16/12/14||Ada / SPARK||Verification|
|13/01/15||Lab time (only for questions on assignment)|
|27/01/15||Final Exam||no lab|