Douglas Gregor, Ph.D
Doug Gregor Assistant Director
Open Systems Laboratory
Indiana University
135 Lindley Hall
Bloomington, IN 47405
Phone: (812) 855-8898
Fax: (812) 855-4829

Research Interests
  • Generic Programming, Generative Programming, Template Metaprogramming, and other techniques used to build efficient, reusable software libraries.
  • Parallel and distributed programming, including programming models for exploiting parallelism, libraries and languages to realize those models, and parallel and distributed algorithms.
  • Sequential, parallel, and distributed graph algorithms.
  • Visualization of large and distributed graphs, including the algorithms that operate on them.
  • Compiler analyses and optimizations, particularly library-specific and user-defined optimizations that operate at a very high level of abstraction.
  • Ad hoc programming language design, with a strong focus on bending mainstream languages to do new things instead of building research languages from scratch.

Selected Publications
Variadic Templates for C++0x
Douglas Gregor and Jaakko Järvi. Journal of Object Technology, 2008. Note: To appear.

Design and Implementation of a High-Performance MPI for C# and the Common Language Infrastructure
Douglas Gregor and Andrew Lumsdaine. In Proceedings ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, February 2008.

Concepts: Linguistic Support for Generic Programming in C++.
Douglas Gregor, Jaakko Järvi, Jeremy Siek, Bjarne Stroustrup, Gabriel Dos Reis, and Andrew Lumsdaine. In Proceedings of the 2006 ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA '06), October 2006. ACM Press. Accepted. Note: This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. [PDF]

Algorithm specialization in generic programming: Challenges of constrained generics in C++.
Jaakko Järvi, Douglas Gregor, Jeremiah Willcock, Andrew Lumsdaine, and Jeremy Siek. In PLDI '06: Proceedings of the ACM SIGPLAN 2006 conference on Programming language design and implementation, pages 272-282, New York, NY, USA, June 2006. ACM Press. [PDF]

Lifting Sequential Graph Algorithms for Distributed-Memory Parallel Computation.
Douglas Gregor and Andrew Lumsdaine. In Proceedings of the 2005 ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA '05), pp. 423-437. October 2005. [PDF]

More publications...

Education

Active Projects

Past Projects
  • STLlint: A high-level static analysis tool able to detect errors in the use of (generic) software libraries, such as the C++ Standard Template Library. Much of the focus of the static analysis was on high-level loop analyses.
  • libstdc++ debug mode: I developed the debug mode while an intern in the compiler group at Apple in 2003. It enables improved debugging of programs that use the C++ Standard Template Library by tracking the movements of iterators.
  • Simplicissimus: A compiler optimizer that treats user-defined, abstract data types at the same semantic level as built-in data types. Abstract data types are categorized using concepts, which describe abstract semantic properties. Optimizing rewrite rules are written in terms of concepts, so that a single rule can be applied to many different data types, even those not yet known to the optimizer.