Algorithms & Complexity
We study a broad variety of theoretical problems, with the aim of gaining insight into some of the fundamental issues in computer science. Research areas of particular interest include streaming algorithms, pseudorandomness, approximation algorithms, theoretical networking, hardness of approximation, and cryptography
Programming Languages Laboratory
Spans many areas of programming languages and includes type systems, language design, type inference, efficient implementation of higher-order typed languages, side effects, concurrency, security, and metaprogramming.