This course is intended for the Master's student and computer engineer who likes practical programming and problem solving!
After completing this course, you will have the knowledge to plan and set-up a real-time system both on paper and in practice.
The course centers around the problem of achieving timing correctness in embedded systems, which means to guarantee that the system reacts within the real-time requirements.
Examples of such systems include airbags, emergency breaks, avionics, and also multi-media systems like video playback and QoS in web servers.
The course teaches how to plan real-time systems in theory using established mathematical proofs and how to implement them in practice by using the most common scheduling methods.
We also learn and how to program the system in the C language using the FreeRTOS real-time kernel.
Finally we have a look at the future of real-time systems namely multi-core real-time systems!
This course focus on the learn-by-doing approach with many examples and real-world programming assignments.
We have 5 modules, each with a gentle graded quiz in the end and one peer reviewed programming assignment.
In case you have no experience with C programming, please check you a practical course like:
https://www.coursera.org/learn/arduino-platform
The course is actually quite fun!
-Simon Holmbacka / Åbo Akademi University
Check out our whole curriculum: https://research.it.abo.fi/

From the lesson

Non-Periodic Jobs

All things are easy and nice when not caring about non-periodic jobs. When including non-periodic jobs, the schedulers must take these into account to make a feasible schedule, which we learn this week. The problem is that a non-periodic job can arrive at any time, even if a periodic job is already scheduled. We learn both how to optimize a schedule for non-periodic jobs and how to validate a schedule when non-periodic jobs arrive to the schedule.
Concretely, we will learn: (1) How to use the slack stealing method to optimize a schedule with non-periodic jobs (2) How to use the LRT scheduler to optimize a schedule with non-periodic jobs (3) How to use the deferrable server to optimize a schedule with non-periodic jobs (4) Formally verify a schedule with non-periodic jobs