The slides for the first lecture are online, the recording will not be available
Thank you for attending the first lecture of the Embedded Systems core course. The lecture slides are online in the materials page, but there was unfortunately a problem with the recording. Hence, there will be no uploaded recording for the lecture. If you have any... Read more
Thank you for attending the first lecture of the Embedded Systems core course. The lecture slides are online in the materials page, but there was unfortunately a problem with the recording. Hence, there will be no uploaded recording for the lecture. If you have any question about the logistics of the course, feel free to contact me via email.
Embedded systems are computer systems with a dedicated function within a larger mechanical or electrical system. The vast majority of computing systems are - in fact - embedded. Many of the systems we interact with in our daily life contain embedded systems. Think for example about a washing machine, or a dishwasher, or a smart watch, or a mobile phone. According to a 2009 article, "around 98% of the new CPUs produced each year are embedded".
Embedded systems often interact with the physical world around them, and many of them are control systems, that change the behavior of the environment around them to achieve some desired specification (think for example about a thermostat, or about the cruise control system in a car). Because their computation is dedicated to specific tasks, it is often possible to optimize the computation units to: (i) reduce the size and cost of the product, and (ii) increase its reliability and performance.
In this course we will take a look at the theoretical foundation of embedded systems programming, with a strong emphasis on cyber-physical systems. In particular, the course is divided into three modules.
- Models: The first part is dedicated to modeling the physics that the embedded systems interact with. We will look at (particular classes of) dynamical systems and discuss models in continuous time and discrete time. We will also look into how to model discrete state systems, and combination of discrete state and dynamical systems, known as hybrid systems.
- Control: The second part of the course is dedicated to control principles. We will investigate how to change the behavior of physical systems and how the computation can interact with the environment around us. In particular, we will look at two control techniques: (i) state feedback, and (ii) PID control.
- Implementation: The third part of the course is dedicated to study what happens when implementing code for embedded systems. In particular, we will look at scheduling, communication, fault tolerance, and testing.
Lectures are scheduled on Tuesdays 16-18 and Thursdays 10-12 in lecture hall HS002 (building E1 3).
Tutorials are scheduled on Mondays 14-16 in SR 016 (building E1 3).
In the timetable page, you can see a detailed plan for lectures and tutorial dates.
Note that lectures are in-person events. Recordings will be made available after the lecture, without any guarantee on the quality level.
To be admitted to the exam, you need to pass a midterm assignment. The grade is entirely determined based on the result of the exam.
- Knowledge of Linear Algebra is needed for both part 1 and 2.
To refresh linear algebra concepts, I recommend you to watch the youtube playlist "the essence of linear algebra".
You will use (at least) one alternative as software to study and practice the course content:
- Julia (with the ControlSystems library), or
- MATLAB (and the ControlSystems toolbox), or
- Python (with the ControlSystems library).
While Julia and Phyton are open source and easy to obtain, you can download MATLAB from asknet (free of charge with your student account). You don't need to choose a preferred language at the course start, but please make sure that you have the software you want to use installed before the first exercise session and use the software to double check the solution of your exercises.