Embedded Software and Systems Course @ UvA Continues to Evolve

The fall semester of the very special academic year 2020/2021 is over. Most of the students following the Master of Software Engineering program at the University of Amsterdam have just completed my course Embedded Software and Systems (ESS). The ESS course had changed in a three important ways this year.

Firstly, a generic lecture about Petri Nets was changed to a series about two lectures, explaining how Petri Nets can be used to model and analyze software interfaces and components. Part of the material for this course was reused from the course Modelling and Analysis of Component-based Systems (MOANA-CBS), developed together with Thales targeting an industrial audience. These new lectures also prime students nicely for a lecture about the DYNAMICS project, a research collaboration between ESI and Thales. This allows me to show how these models and analyses can be used in practice to address problems related to software evolution by detecting incompatibilities and generating adapters when updating software interfaces. A generic lecture about the data-flow model of computation was removed to create room for this new material, but I am happy to teach fewer modelling formalisms and have more time to go in depth and show how they can be used to solve industrial problems. A nice result of this change to the course is that three master students have accepted thesis projects in the area of modelling and analysis of software components and interfaces in collaboration with ESI under the supervision of myself and my colleague Debjyoti Bera.

Secondly, the course project was redeveloped this year. Previously, students used Mathworks Stateflow to program Lego Mindstorm EV3 rovers to follow a line, avoid obstacles, and count objects. However, this project felt a bit too much like a toy and there were technical problems with both rovers and tools that were hard to overcome and limited the education experience. In particular, it was not easily possible to see or influence how code was generated for the Lego Mindstorm robots, which felt like a missed opportunity when teaching model-based engineering. 

Two bachelor students did their theses in spring to evaluate the suitability of using the TurtleBot3 Burger robot, both in reality and in simulation using Gazebo, in the course. In addition, Stateflow was exchanged for Yakindu Statechart Tools, which is easier to use and gives us the flexibility we need in code generation. The new application developed in the project is to use Yakindu to program the TurtleBot to autonomously drive through a maze and map it.

Lastly, the COVID-19 pandemic required the entire course to be taught online. As a result, used a blended learning approach and prerecorded the lectures so that the students could watch them when they wanted to. Online interactive sessions were added to the course where the students could ask questions about the lectures, and participate in quizzes and group discussions. Online teaching meant that the students did not have access to the four physical TurtleBots that we had purchased. Luckily, the newly developed course project could be done with simulations in Gazebo. Below is a demo from one of the groups that very successfully solved the assignment. 

The ESS course is continuously evolving and maturing and next year will be no different. Most importantly, we hope that the pandemic will be over by then and that we can put our three physical TurtleBots to good use.

License to Teach

It is my great pleasure to announce that I have received my University Teaching Qualification (UTQ), essentially my license to teach. The UTQ (Basiskwalificatie Onderwijs, BKO in Dutch) is a proof of teaching skills for university teaching staff, which allows you to demonstrate a proven ability to develop and teach courses at university level. It is recognized by all Dutch universities.

One of the most important things I have learned during the UTQ trajectory is the constructive alignment method for course design. I already knew that aligning goals, execution, and assessment was an important part of course design, yet challenging to do in practice. I appreciate that the constructive alignment workshops not only communicated the importance of this alignment, but also provided the tools (e.g. specification tables and tips for assessment) to identify and address misalignments. Constructive alignment may not be the only way to approach course design, but I see it as a very useful method and a good starting point from which further exploration can be done.

One of my stated goals was to learn how to make my lectures more interactive. This is something I knew was important to further improve my teaching, but I did not quite know how to achieve. This was addressed by the workshop on activating teaching that came paired with the excellent list of 50 Classroom Assessment Teachniques (CATs)  by Angelo and Cross. Based on this material, I have now significantly increased the level of interaction and formative assessment in my course Embedded Software and Systems.

Lastly, the module about organizing teaching was very important to lift my view from my course and start looking more at the program that provides the context, in my case the Master of Software Engineering program. Being aware of this context not only makes my course better, but also the program, resulting in a better educational experience for the students. Interviewing people in the program for this module also provided a trigger to go talk to colleagues and build a network that will help both my research and education at UvA going forward.

Course on Modelling and Analysis of Component-based Systems

A course called “Modelling and Analysis of Component-based Systems” (MOANA-CBS) is being developed in collaboration with Thales as a part of the DYNAMICS project. The course addresses the challenge of overseeing the explosion of possible interactions between asynchronously communicating components in component-based systems. Some of these interactions may be undesirable and leave systems prone to deadlock, livelock, race conditions, and buffer overflows, reducing software quality. The course participants in the course learn how to mitigate this problem by modelling the behavior of components and interfaces using Petri Nets, a well-known formalism suitable for describing asynchronously communicating systems. Theory is linked to practice through demonstrations of relevant examples using the ComMA tool. Using properties and analysis methods for Petri Nets, they learn how to identify patterns in component and interface design that may cause the aforementioned problems, as well as design guidelines for how to avoid them. The course is taught using a combination of lectures, assignments, demonstrations, discussions, and reflection.

We piloted parts of the course at Van der Valk Hotel in Arnhem on October 7 and 8, attended by 12 software architects from Thales and Luminis. The course was positioned as a part of their Accelerate program, which aims to accelerate young architects from the two companies into a more senior role. We felt that the delivery of the course went well and evaluations from the participants suggests it was well-received. The evaluation of this pilot also highlighted some further points for improvement that will be considered going forward.

Bachelor Theses on using TurtleBots for Embedded Systems Education

Two bachelor theses one the use of TurtleBot3 for embedded system education have just been finalized. The first thesis by Mirka Schoute is entitled “Application Programming for Embedded Systems in Education on TurtleBot3 using Statecharts” and investigates whether an existing lab project based on Lego Mindstorm EV3 and Stateflow can be replaced by a similar lab project using TurtleBot3 and Yakindu Statechart Tools. It compares the robot platform and the statechart tools in terms of features, and redesigns the lab project to contain the same educational challenges. The main conclusion is that the redesigned project based on TurtleBot3 and Yakindu Statechart Tools are a suitable replacement for old project and provides better opportunities for further development on the project going forward. Based on the results of this thesis, we have decided to change the robot and tooling for the lab project in the academic year 2020/2021. We are happy to announce that Mirka continues working with us over summer to further extend his work and prepare it for student consumption.

The second thesis is written by Louis van Zutphen and is entitled “Gazebo Simulation Fidelity for the Turtlebot3 Burger“. This work studies how well simulation of TurtleBot3 in the simulation environment Gazebo captures the real behavior of the robot. Tests of sensors and actuators are created both in simulation and reality and results are compared. The conclusion is that code developed and tested with Gazebo is easy to deploy on the TurtleBot, but that there are numerous differences between the real robot and environment and their corresponding models in Gazebo that affect the fidelity. Most of these differences can be managed as long as the programmer is aware of them, allowing the amount of time required with the physical robot to be greatly reduced. This work has convinced us that we do not need to buy a TurtleBot for each group of students, but that we can significantly reduce the cost of the lab by efficiently sharing them.

TurtleBot following a wall while avoiding obstacles and counting pieces of reflective tape.