I am an Assistant Researcher in the Computer Architecture and VLSI Systems Laboratory of the Institute of Computer Science of the Foundation for Research and Technology - Hellas focusing on Concurrency and Programming Languages.
I received my PhD in 2008 from the University of Maryland where I was a member of the PLUM research group. I spent a year as a post-doctoral researcher in Laboratoire Verimag


My research aims to develop tools and techniques that aid programmers in improving the quality of software. I am interested in programming languages, software engineering, type systems and static analysis, and their applications on concurrent software.

Scalable Runtime Systems

We design and develop scalable runtime systems at the node and the datacenter level. Myrmics, BDDT, and PARTEE are task-parallel runtimes for distributed-memory, non cache coherent shared memory and cache coherent shared memory multicore processors that scale parallel applications to tens or hundreds of cores. GreenVM is a Java Virtual Machine for distributed memory manycores running on the 512-core Formic prototype.

Software Fault Tolerance

An error in a single core of a 64-core or 512-core parallel processor should not cause the whole system to malfunction. We design and build software systems that can recover from soft-errors and hard-errors, focusing on multicore processors. We are using traditional techniques like checkpointing and redundancy, combining them with high-level abstractions like task-parallel programming that help make fault-tolerance very efficient.

Static Analysis and Compilation

We have implemented several static analyses that take advantage of high-level abstractions in parallel programming languages like regions and tasks, to efficiently compile these programs to multicore processors and distributed systems.



Students, Supervised or Co-Supervised