We develop techniques for designing, implementing, and reasoning about multiprocessor algorithms, in particular concurrent data structures for multicore machines and the mathematical foundations of the computation models that govern their behavior.

Our research is directed at the use of randomness and combinatorial techniques in concurrent algorithm and data-structure design. We also study parallelism in the brain and what we can learn from it towards the design of futuristic computing machines.