Embedded Systems Martina Maggio

Registration for this course is open until Monday, 19.04.2021 23:59.



Course kickoff: April 13th at 14:15 (zoom meeting link active from 14:00)

Hello everybody and welcome to the Embedded Systems course in the summer semester 2021. During the course you will experience a mix of lectures and tutorials. The first lecture is going to be live on zoom on April 13th at 14:15. We are going to discuss the logistics... Read more

Hello everybody and welcome to the Embedded Systems course in the summer semester 2021. During the course you will experience a mix of lectures and tutorials. The first lecture is going to be live on zoom on April 13th at 14:15. We are going to discuss the logistics of the course and the main motivation behind the study of embedded systems and why we have selected some specific topics. The following lectures are going to be recorded videos (that you will be able to download), released at specific times. Tutorials are going to be live and held in zoom. To get the links for the first lecture, the videos, and the tutorials you can simply go to the Materials page. To see the schedule for the course, you can browse to the Timetable page. To contact me or your tutors, please use the email addresses that you find in the Team page. I hope you will enjoy the course.


Embedded Systems

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. In particular, the course is divided into three modules:

  1. Models,
  2. Control, and
  3. Implementation.

Models (Lecture 2 to 7)

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 (Lecture 8 to 11)

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 (Lecture 12 to 17)

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 and tutorials are scheduled according to what you see in the calendar page. The first lecture (discussing course logistics and content in general) is live, using zoom. The other lectures are recorded. Tutorials are going to be live using zoom. You will find the zoom links in the material page.

Disclaimer: We have decided to use zoom for both the first lecture and tutorials, as it provides superior functionality and usability for lecturing, including seamless live interaction and smooth integration of a whiteboard. We thus encourage you to join the zoom meeting with your real name, your camera on, and ask questions verbally. However, this is of course voluntary. If you are concerned about privacy, we encourage you to enter the zoom meeting under a nickname or pseudonym, and use only the textual chat for communication.


To be admitted to the exam, you need to pass a midterm assignmentThe 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). Julia is open source, you can download the current Julia version here and MATLAB from asknet (free of charge with your student account). It is also possible to use Python (with the ControlSystems library), but the solutions of the exercises will not include python code for comparison. 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.

Privacy Policy | Legal Notice
If you encounter technical problems, please contact the administrators