Overview
What I study
I work on making computer systems — especially the embedded systems inside cars, aircraft, industrial equipment, and everyday appliances — safer, more reliable, and more trustworthy.
My research covers system software (real-time operating systems (RTOS), scheduling, resource management), verification and testing (including fuzzing and formal methods), safety and security analysis, and assurance frameworks. I collaborate closely with both academic researchers and industry engineers.
Overview
Why it matters now
Embedded systems used to operate largely on their own. Today, most are connected to networks, cloud services, and other systems around them.
Because of this change, it is no longer enough to study a single device on its own. We also need to understand the larger systems formed by many parts interacting with each other.
Overview
Current topics
Right now I am working on a few specific problems. One is running programs of different importance safely on a single in-car computer — known as mixed-criticality — for software-defined vehicles, cars whose features are updated through software. Another is access control for IoT devices that protects privacy, using blockchain together with zero-knowledge proofs, a way of proving a fact is true without revealing the data behind it.
I also work on fuzzing that can find bugs in programs running many tasks at once, and on keeping Mobility-as-a-Service — services that combine trains, buses, ride-sharing, and other transport — running even when parts of it fail. What ties these together is one concern: a system needs support not only when it is designed, but throughout the years it is used and changed.
Overview
Two complementary approaches
One approach focuses on a single embedded system and builds it carefully from components whose behavior is well understood. This lets us reason step by step about performance and quality.
The other approach looks at larger systems that include unknown or changing parts, and that interact with people and society. Here the goal is to keep the system in as good a state as possible and to explain its behavior, even when full understanding is out of reach.