Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Farhoud Hosseinpour

This course is all about 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.

Read more

This course is all about 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

Ideate. Innovate. Iterate with EIT Digital

Enroll now

What's inside

Syllabus

Introduction to Real-Time Systems
Here is where it all starts! We will make a brave attempt to start your future career in real-time systems! This week starts by learning the basic building stones in real-time systems and the system parameters required to successfully construct a real-time system. We introduce you to the corner stone of real-time systems, namely the scheduler – and its task in real-time schedules. You learn also what kind of real-time guarantees are needed in which systems. Concretely, you will learn (1) What is needed to create a real-time system (2) Where real-time requirements are needed. (3) The task and job structure and the parameters needed to schedule a task. (4) Difference between pre-emptive and non-pre-emptive tasks. This course is also part of a Blended Master Programme in Embedded Systems.
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Helps learners achieve timing correctness in embedded systems, which is needed in airbags, emergency breaks, and avionics
Explores mathematical proofs to plan real-time systems and uses the FreeRTOS real-time kernel to implement them
Introduces multi-core real-time systems and explores multi-core scheduling methods, which are important for the future of real-time systems
Provides hands-on practice through many examples and real-world programming assignments, which helps learners apply the concepts they learn
Led by Farhoud Hosseinpour, who is experienced in real-time systems
Requires familiarity with C programming

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Real-time systems: theory and practical freertos

According to learners, this course provides a solid introduction to the fundamental concepts of real-time systems, balancing theoretical principles like scheduling algorithms with practical application using FreeRTOS and the C language. Many found the hands-on programming assignments to be particularly valuable for reinforcing learning and applying concepts in a real-world context. However, a recurring theme is that the course requires a strong prerequisite knowledge of C programming and potentially operating system basics; some learners felt the transition from theory to implementation could be challenging without this background. While the practical labs are generally well-received, some found the theoretical lectures dense or abstract at times.
Combines theoretical concepts with coding.
"A good course covering theory and practical FreeRTOS."
"Good introduction to RTS concepts and scheduling. The FreeRTOS labs are useful."
"This course provides a good blend of theoretical foundations and practical exercises."
Projects reinforce learning effectively.
"Assignments are challenging but really solidify the concepts."
"The programming assignments were key to understanding."
"The hands-on programming assignments were very helpful for applying the theory."
"I appreciated the focus on learn-by-doing with the assignments."
Some lectures can be abstract.
"Some parts of the theory lectures were a bit dense, but overall valuable."
"Found the theory sections quite abstract and hard to follow at times."
"The jump from theory to implementation felt like too much without more guidance."
Challenging without C/OS background.
"Definitely need solid C skills beforehand."
"Requires a strong background in C and OS concepts."
"Struggled significantly with the programming assignments... Assumes too much prior knowledge."
"Make sure you are comfortable with C programming."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Development of Real-Time Systems with these activities:
Review Basic C Programming Concepts
Ensure a solid foundation by refreshing your C programming skills. This will help you confidently implement real-time scheduling algorithms and navigate the complexities of embedded systems.
Browse courses on C Programming
Show steps
  • Review online tutorials or books on C programming.
  • Solve coding challenges or practice problems.
  • Build a small C project to demonstrate your understanding.
Attend Industry Webinars on Real-Time Systems
Connect with professionals and gain insights into real-world applications of real-time systems. Webinars offer a valuable platform to expand your network and stay abreast of industry trends.
Show steps
  • Research upcoming industry webinars on real-time systems.
  • Register for relevant webinars and attend them.
Organize a Study Group for Real-Time Concepts
Enhance your understanding through collaboration. By forming a study group, you can engage in discussions, quiz each other, and collectively tackle challenging concepts.
Show steps
  • Find fellow students interested in forming a study group.
  • Establish regular meeting times and a dedicated study space.
  • Prepare discussion topics and assignments for each session.
Eight other activities
Expand to see all activities and additional details
Show all 11 activities
Virtual Study Group on Real-Time Systems
Join or form a virtual study group to discuss concepts, solve problems, and share knowledge with peers, fostering collaboration and deeper understanding.
Browse courses on Real-Time Systems
Show steps
  • Identify or establish a virtual study group through online platforms.
  • Set regular meeting times and establish a communication channel.
  • Prepare discussion topics and problems related to real-time systems.
  • Engage in active discussions, sharing perspectives and insights.
  • Encourage peer feedback and support in understanding complex concepts.
Practice Scheduling Simulation
Practice scheduling simulations to enhance understanding of scheduling methods and their impact on system performance.
Browse courses on Real-Time Systems
Show steps
  • Set up a simulation environment for a real-time system.
  • Define the system parameters, including tasks, resources, and timing constraints.
  • Implement different scheduling algorithms (e.g., fixed priority, dynamic priority).
  • Run simulations and analyze the performance of each algorithm.
  • Compare the results and identify the most effective scheduling algorithm for the given system.
  • Repeat the process for different system configurations and scenarios.
Online Tutorial on FreeRTOS
Follow guided tutorials to learn about the architecture, functionality, and application of FreeRTOS in real-time systems.
Browse courses on FreeRTOS
Show steps
  • Register for an online course or tutorial on FreeRTOS.
  • Complete the tutorial modules, covering topics such as task creation, synchronization, and interrupt handling.
  • Practice implementing FreeRTOS in a sample project.
  • Troubleshoot any issues encountered during the implementation.
  • Complete the tutorial assessment to demonstrate your understanding.
Implement a Real-Time Scheduler in C
Solidify your understanding of real-time scheduling concepts by implementing a scheduler in C. This will help you develop a deeper appreciation for the practical aspects of real-time system design.
Show steps
  • Review the concepts of real-time scheduling.
  • Choose a scheduling algorithm (e.g., Round-Robin, Priority-Based).
  • Design and implement the scheduler in C.
  • Test and debug your implementation.
Design a Real-Time System for a Specific Application
Apply course principles to design a real-time system for a specific application, considering factors such as timing constraints, resource utilization, and fault tolerance.
Browse courses on Scheduling
Show steps
  • Define the requirements and specifications for the real-time system.
  • Identify and analyze the system parameters, including tasks, resources, and timing constraints.
  • Select and implement appropriate scheduling algorithms.
  • Perform feasibility analysis to ensure the system meets the timing requirements.
  • Prepare a comprehensive design document outlining the system architecture, algorithms, and analysis results.
Participate in a Real-Time Systems Workshop
Immerse yourself in a hands-on workshop where you can apply your knowledge, collaborate with peers, and receive expert guidance. Workshops provide an intensive learning experience that can significantly enhance your understanding.
Browse courses on Scheduling Algorithms
Show steps
  • Research and identify suitable real-time systems workshops.
  • Apply and register for the workshop.
  • Actively participate in the workshop activities and discussions.
Explore Advanced Scheduling Techniques
Expand your knowledge by delving into more advanced scheduling techniques. This will prepare you for handling complex real-time systems that require sophisticated scheduling algorithms.
Show steps
  • Study research papers or online tutorials on advanced scheduling.
  • Implement a specific advanced scheduling algorithm in a simulated environment.
  • Analyze and compare the performance of different scheduling algorithms.
Develop a Whitepaper on Real-Time System Design
Synthesize your learning by creating a comprehensive whitepaper on real-time system design. This will challenge you to organize and articulate your knowledge, while also contributing to the broader understanding of the subject.
Browse courses on Scheduling Algorithms
Show steps
  • Research and gather information on real-time system design.
  • Organize and structure your whitepaper.
  • Write the whitepaper, ensuring clear and concise language.
  • Proofread and edit your whitepaper.

Career center

Learners who complete Development of Real-Time Systems will develop knowledge and skills that may be useful to these careers:
Real-Time Systems Engineer
A Real-Time Systems Engineer designs, develops, and maintains real-time systems. This course will help you build a foundation in the principles and practices of real-time systems engineering. You will learn how to plan and schedule real-time systems, and how to implement them using real-time operating systems.
Embedded Systems Engineer
An Embedded Systems Engineer develops and integrates hardware and software components into embedded systems. This course may be helpful in providing you with the skills to design and implement real-time operating systems and to schedule tasks and resources in embedded systems.
Hardware Engineer
A Hardware Engineer designs, develops, and maintains hardware systems. This course may be helpful in providing you with the skills to design and implement real-time hardware systems. You will learn how to design and test hardware components, and how to integrate them into real-time systems.
Software Engineer
A Software Engineer designs, develops, and maintains software systems. This course may be helpful in providing you with the skills to design and implement real-time software systems. You will learn how to schedule tasks and resources in real-time systems, and how to program real-time operating systems.
Test Engineer
A Test Engineer tests and evaluates software and hardware systems. This course may be helpful in providing you with the skills to test and evaluate real-time systems. You will learn how to develop and execute test plans, and how to analyze and interpret test results.
Quality Assurance Engineer
A Quality Assurance Engineer ensures that software and hardware systems meet quality standards. This course may be helpful in providing you with the skills to develop and implement quality assurance processes for real-time systems. You will learn how to identify and mitigate risks, and how to improve the quality of real-time systems.
Reliability Engineer
A Reliability Engineer ensures that software and hardware systems are reliable. This course may be helpful in providing you with the skills to develop and implement reliability processes for real-time systems. You will learn how to identify and mitigate risks, and how to improve the reliability of real-time systems.
Safety Engineer
A Safety Engineer designs and implements safety systems. This course may be helpful in providing you with the skills to design and implement safety systems for real-time systems. You will learn how to identify and mitigate hazards, and how to develop and evaluate safety systems.
Systems Analyst
A Systems Analyst analyzes, designs, and implements information systems. This course may be helpful in providing you with the skills to analyze and design real-time systems. You will learn how to identify and prioritize requirements, and how to develop and evaluate system designs.
Maintenance Engineer
A Maintenance Engineer maintains and repairs software and hardware systems. This course may be helpful in providing you with the skills to maintain and repair real-time systems. You will learn how to diagnose and troubleshoot problems, and how to perform maintenance and repairs.
Systems Engineer
A Systems Engineer designs, develops, and integrates complex systems. This course may be helpful in providing you with the skills to design and integrate real-time systems. You will learn how to identify and prioritize requirements, and how to develop and evaluate system designs.
Robotics Engineer
A Robotics Engineer designs, builds, and maintains robots. With your knowledge of real-time systems, you can ensure that a robot responds quickly and accurately to its environment. This course may be helpful in providing you with the skills to program robots to respond to sensor data in real time and to plan robot movements and trajectories.
Project Manager
A Project Manager plans, organizes, and executes projects. This course may be helpful in providing you with the skills to manage real-time systems projects. You will learn how to plan and schedule projects, and how to manage risk and resources.
Technical Writer
A Technical Writer creates and maintains technical documentation. This course may be helpful in providing you with the skills to create and maintain technical documentation for real-time systems. You will learn how to write user manuals, technical reports, and other technical documentation.
Educator
An Educator teaches students about a particular subject. This course may be helpful in providing you with the skills to teach students about real-time systems. You will learn about the principles and practices of real-time systems engineering, and how to develop and deliver effective teaching materials.

Reading list

We've selected 28 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Development of Real-Time Systems.
This introductory book on real-time systems covers theoretical foundations as well as practical applications. It will provide you with a good understanding of the fundamentals of real-time systems and help you apply those theories into practice.
Provides a comprehensive overview of real-time systems from a predictable approach. It will help you understand the different types of real-time systems and how to design and implement them in a predictable manner.
Comprehensive guide to real-time embedded systems. It covers a wide range of topics, including hardware and software design, scheduling algorithms, and performance evaluation.
Provides a comprehensive overview of real-time systems, including their design, analysis, and implementation. It valuable resource for anyone who wants to learn more about this important topic.
This classic textbook offers a comprehensive treatment of real-time systems and programming, providing a solid foundation for further exploration.
Provides a comprehensive overview of real-time systems design and analysis. It will help you understand the different aspects of real-time systems design and analysis and how to design and implement real-time systems in a systematic manner.
Provides a comprehensive overview of real-time systems design. It will help you understand the different aspects of real-time systems design and how to design and implement real-time systems in a systematic manner.
Great introduction to embedded system design. It covers a wide range of topics, including hardware and software design, programming techniques, and debugging.
Explores the theoretical foundations and practical aspects of real-time programming, providing a deeper understanding of the concepts and techniques involved.
Comprehensive guide to embedded systems design using the ARM Cortex-M3 processor. It covers a wide range of topics, including hardware and software design, programming techniques, and debugging.
Provides a comprehensive overview of embedded systems, including hardware, software, and design techniques. It will help you understand the fundamental concepts of embedded systems and how to apply them in practice.
Classic text on computer architecture. It provides a comprehensive overview of the field, including topics such as instruction set architecture, memory hierarchy, and performance evaluation.
Great introduction to computer systems performance analysis. It covers a wide range of topics, including queuing theory, scheduling algorithms, and performance modeling.
Comprehensive guide to the ARM Cortex-M3 processor. It covers a wide range of topics, including hardware and software design, programming techniques, and debugging.
Great introduction to programming embedded systems. It covers a wide range of topics, including hardware and software design, programming languages, and debugging techniques.
Explores the use of Java in real-time systems, providing insights into the challenges and opportunities of Java-based real-time programming.
This practical guide focuses on C programming for embedded microcontrollers, complementing the course's emphasis on FreeRTOS programming.
With its emphasis on embedded real-time systems, this book complements the course by providing insights into the design and programming of such systems.
Serves as a valuable reference for those interested in the technical details of ARM Cortex-M microcontrollers, which are commonly used in embedded real-time systems.
Provides a practical guide to embedded software development in C, focusing on embedded systems programming techniques.
Provides a general understanding of operating systems concepts, which can be beneficial for grasping the foundations underlying real-time operating systems.
This widely-used textbook offers a comprehensive overview of operating systems, providing a broader context for understanding real-time systems.
This practical guide provides a comprehensive overview of embedded Linux programming, offering insights into its use in real-time systems.
Great introduction to operating systems concepts, including scheduling, memory management, and file systems. It is written in a clear and concise style, and it is suitable for both beginners and experienced programmers.
Provides a comprehensive overview of real-time systems design and analysis. It valuable resource for anyone who wants to learn more about this topic.
This textbook provides a well-rounded introduction to embedded systems, offering a broader perspective on the field and its applications.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser