This course presents an overview of time as it relates engineering complex software systems including embedded systems. In this course, basic concepts, terminology, and issues of embedded/real-time/cyber-physical systems are examined.
The course aims to ensure that students not only acquire the knowledge and technique required for embedded/real-time system development, but also gain skills to formally model/verify cyber-physical systems.
By the end of the course students should be able to:
(1) define what it means to be a real-time system,
(2) design and develop simple embedded/real-time programs on RTOS,
(3) formally model and verify cyber-physical systems, and
(4) discuss timing, scheduling and related properties.
Embedded Systems, Real-Time Systems, Cyber-Physical Systems, IoT, Real-Time Operating Systems, RTOS, Scheduling, Schedulability Analysis, Verification, Model-Checking, Timed Automata, Functional Reactive Programming
✔ Specialist skills | Intercultural skills | Communication skills | Critical thinking skills | Practical and/or problem-solving skills |
Classroom learning and programming exercises
Course schedule | Required learning | |
---|---|---|
Class 1 | Course Introduction and Overview, Overview of Real-Time Systems | Understand some important characteristics and definitions of real-time systems |
Class 2 | RTOS (1): Overview, Roles of RTOS Kernels, Real-Time Tasks | Understand the roles of RTOS kernels and real-time tasks |
Class 3 | RTOS (2): Synchronization Mechanisms in RTOS | Understand the concepts and algorithms of synchronization in RTOS |
Class 4 | RTOS (3): Priorities and Scheduling | Understand the concepts of priorities and scheduling algorithms of real-time tasks |
Class 5 | RTOS Programming (1): Overview, RTOS Programming in C/C++ | Understand how to construct real-time programs in C/C++ for an RTOS |
Class 6 | RTOS Programming (2): Abstractions Mechanisms for Real-Time Processing | Understand the usages of abstraction mechanisms in an RTOS |
Class 7 | Modeling Cyber-Physical Systems (1): Synchronous Model | Understand modeling methods for cyber-physical systems and the concepts of the synchronous model of CPS |
Class 8 | Modeling Cyber-Physical Systems (2): Asynchronous Model | Understand the concepts of the asynchronous model of CPS |
Class 9 | Modeling Cyber-Physical Systems (3): Timed Model | Understand the concepts of the timed model of CPS |
Class 10 | Verifying Real-Time Systems (1): Model-Checking Timed-Automata | Understand methods and algorithms for model-checking timed-automata |
Class 11 | Verifying Real-Time Systems (2): Verification using UPPAAL | Understand formal verification methods using UPAAL model checker |
Class 12 | Analysis of Real-Time Systems (1): Schedulability Analysis and Static Scheduling | Understand the concepts of schedulability and static scheduling algorithms for real-time tasks |
Class 13 | Analysis of Real-Time Systems (2): Dynamic Scheduling | Understand dynamic scheduling algorithms for real-time tasks |
Class 14 | Advanced Topics (1): Reactive Programming | Understand the concepts and methods of reactive programming |
Class 15 | Advanced Topics (2): Functional Reactive Programming | Understand the concepts and methods of functional reactive programming |
None required (course materials will be provided via course website)
R. Alur, Principles of Cyber-Physical Systems, MIT Press, 2015.
E.-R. Olderog and H. Dierks, Real-Time Systems: Formal Specification and Automatic Verification, Cambridge U. Press, 2008.
Assignment: 50%
Programming Project: 50%
Students must have successfully completed the related courses or have equivalent knowledge.
Students are required to have familiarity with basic Unix terminal commands.