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.
The assignment of fixed seats takes place at October 9 and 10 and follows the new assignment scheme for lab courses as proposed by the student union. With this new scheme, the time of registration and is irrelevant. Instead, the following rules are applied:
- students who did not yet complete 15 ECTS with lab courses take priority over others
- students in higher semesters take priority over students of lower ones
- each student can prioritize her/his registrations individually: the order of course registration is used as an indication of your preferences; courses registered later are interpreted as being less important for you
First Lecture: Be there or loose your fixed seat
Additionally, since we got limited lab seats, we will unroll students not attending the introduction lecture.
Note: Schedule may change without prior notice.
|Contents Lecture||Contents Lab|
|20/10/15||Esterel (1)||Basic Esterel|
|27/10/15||Esterel (2)||Esterel contd.|
|Computer Architecture (1)||Esterel contd.|
|Computer Architecture (2)||WCET Demo|
|WCET Analysis||WCET in Esterel, Compiling Esterel|
|Synchronization & Scheduling|
|Ada: Basic Elements||Basic Programs|
|Ada: Tasking & Synchronization||Tasking & Synchronization|
|Ada for High-Integrity Systems||Ravenscar Examples|
|12/01/16||Model Checking||MC in Esterel|
|19/01/16||Ada Verification / SPARK||Verification in Ada|
|26/01/16||Q & A|
|02/02/16||Final Exam||no lab|