Distributed systems

Distributed systems are everywhere today and their usage is expected to grow: e.g., for web services, mobile phone backend, cloud services, big data processing, IoT, machine learning, etc. I am interested in new distributed system designs that can facilitate running existing and new applications while guaranteeing safety and correctness.

Formal verification

Formal verification of system code can guarantee the correctness and safety of the system. However, software verification is often considered complex and time-consuming and verified code tends to run slower than unverified code. Co-designing the system and formal verification can solve both issues: code verification can be simplified and the verified code can run without performance degradation.

Cloud storage systems

Cloud storage systems can be considered as distributed systems but there are specialized concerns regarding how to store and mutate the data and how the system should interact with lower-level storage devices. More specifically, my research topics include the use of various transactional mechanisms, consistency semantics, and new storage media technologies in the cloud and distributed environment.

Operating systems

Many systems research topics have an intersection with operating systems research as the operating system is one of the most fundamental systems. Topics of interest regarding operating systems include file and storage systems and operating system support for new and emerging hardware devices.