BACK TO INDEX

Publications of Andrew Lumsdaine
Books and proceedings
  1. Jeremy Siek, Lee-Quan Lee, and Andrew Lumsdaine. The Boost Graph Library: User Guide and Reference Manual. Addison-Wesley, 2002. [bibtex-entry]


Articles in journals or book chapters
  1. Ronald Garcia, Jaakko Järvi, Andrew Lumsdaine, Jeremy Siek, and Jeremiah Willcock. An Extended Comparative Study of Language Support for Generic Programming. Journal of Functional Programming, 2005.
    Note: Submitted. [bibtex-entry]


  2. Jeremy G. Siek and Andrew Lumsdaine. C++ Concept Checking. Dr. Dobb's Journal, June 2001. [bibtex-entry]


  3. Jeremy G. Siek and Andrew Lumsdaine. The Generic Graph Component Library. Dr. Dobb's Journal, September 2000. [bibtex-entry]


  4. Jeremy Siek and Andrew Lumsdaine. Software Engineering for Peak Performance. C++ Report, pp 23--27, May 2000. [bibtex-entry]


  5. Jeremy G. Siek and Andrew Lumsdaine. Advances in Software Tools for Scientific Computing, chapter A Modern Framework for Portable High Performance Numerical Linear Algebra. Springer, 2000. [bibtex-entry]


  6. Jeremy G. Siek and Andrew Lumsdaine. The Matrix Template Library: Generic Components for High-performance Scientific Computing. Computing in Science and Engineering, 1(6):70--78, November 1999. [bibtex-entry]


Conference articles
  1. Jeremy Siek and Andrew Lumsdaine. Language Requirements for Large-Scale Generic Libraries. In GPCE '05: Proceedings of the fourth international conference on Generative Programming and Component Engineering, September 2005.
    Note: Accepted for publication.
    Annotation: The past decade of experience has demonstrated that the generic programming methodology is highly effective for the design, implementation, and use of large-scale software libraries. The fundamental principle of generic programming is the realization of interfaces for entire sets of components, based on their essential syntactic and semantic requirements, rather than for any particular components. Many programming languages have features for describing interfaces between software components, but none completely support the approach used in generic programming. We have recently developed G, a language designed to provide first-class language support for generic programming and large-scale libraries. In this paper, we present an overview of G and analyze the interdependence between language features and libraries design in light of a complete implementation of the Standard Template Library using G. In addition, we discuss important issues related to modularity and encapsulation in large-scale libraries and how language support for validation of components in isolation can prevent many common problems in component integration.
    [bibtex-entry]


  2. Jeremy Siek and Andrew Lumsdaine. Essential Language Support for Generic Programming. In PLDI '05: Proceedings of the ACM SIGPLAN 2005 conference on Programming language design and implementation, New York, NY, USA, pages 73--84, June 2005. ACM Press.
    Annotation: ``Concepts'' are an essential language feature needed to support generic programming in the large. Concepts allow for succinct expression of bounds on type parameters of generic algorithms, enable systematic organization of problem domain abstractions, and make generic algorithms easier to use. In this paper we present the design of a type system and semantics for concepts that is suitable for non-type-inferencing languages. Our design shares much in common with the type classes of Haskell, though our primary influence is from best practices in the \C pp{} community, where concepts are used to document type requirements for templates in generic libraries. Concepts include a novel combination of associated types and same-type constraints that do not appear in type classes, but that are similar to nested types and type sharing in ML.
    [bibtex-entry]


  3. Jeremy Siek and Andrew Lumsdaine. Modular Generics. In Concepts: a Linguistic Foundation of Generic Programming, April 2004. Adobe Systems.
    Annotation: This paper presents the design of G, a new language specifically created for generic programming. We review and identify important language features of C++ and Haskell in light of the past decade of generic library research and development. Based on this analysis we propose and evaluate relevant language design decisions for G. Generic programming is concerned with the construction of libraries of reusable software components and is inherently about programming ``in the large.'' Thus, the design of G places its greatest emphasis on modularity and safety, while also providing run-time efficiency and programmer convenience. This paper focuses on name scoping and type checking for generic functions, support for dispatching to algorithm specializations, support for type associations among abstractions, and separate compilation. The resulting design for G includes three novel aspects: scoped models declarations, nested types in concepts, and optional type constraints on generic functions.
    [bibtex-entry]


  4. Ronald Garcia, Jaakko Järvi, Andrew Lumsdaine, Jeremy G. Siek, and Jeremiah Willcock. A Comparative Study of Language Support for Generic Programming. In Proceedings of the 2003 ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA'03), October 2003. [bibtex-entry]


  5. Jaakko Järvi, Andrew Lumsdaine, Jeremy Siek, and Jeremiah Willcock. An Analysis of Constrained Polymorphism for Generic Programming. In Kei Davis and Jörg Striegnitz, editors, Multiparadigm Programming in Object-Oriented Languages Workshop (MPOOL) at OOPSLA, Anaheim, CA, October 2003. [bibtex-entry]


  6. Sibylle Schupp, D. P. Gregor, B. Osman, David R. Musser, Jeremy G. Siek, Lie-Quan Lee, and Andrew Lumsdaine. Concept-Based Component Libraries and Optimizing Compilers. In Proceedings IPDPS'02, 2002. [bibtex-entry]


  7. Jeremiah Willcock, Jeremy Siek, and Andrew Lumsdaine. Caramel: A Concept Representation System for Generic Programming. In Second Workshop on C++ Template Programming, Tampa, Florida, October 2001. [bibtex-entry]


  8. Jeremy Siek and Andrew Lumsdaine. Concept checking: Binding parametric polymorphism in C++. In Proceedings of the First Workshop on C++ Template Programming, Erfurt, Germany, 2000. [bibtex-entry]


  9. Lie-Quan Lee, Jeremy G. Siek, and Andrew Lumsdaine. Generic Graph Algorithms for Sparse Matrix Ordering. In ISCOPE'99, Lecture Notes in Computer Science, 1999. Springer-Verlag. [bibtex-entry]


  10. Jeremy G. Siek, Lie-Quan Lee, and Andrew Lumsdaine. The generic graph component library. In Proceedings of the 1999 ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pages 399--414, 1999. ACM Press. [bibtex-entry]


  11. Jeremy Siek and Andrew Lumsdaine. Mayfly: A Pattern for Lightweight Generic Interfaces. In Pattern Languages of Programs, July 1999. [bibtex-entry]


  12. Jeremy G. Siek and Andrew Lumsdaine. The Matrix Template Library: A Unifying Framework for Numerical Linear Algebra. In Parallel Object Oriented Scientific Computing, 1998. ECOOP. [bibtex-entry]


  13. Jeremy G. Siek and Andrew Lumsdaine. The Basic Linear Algebra Instruction Set: Building Blocks for Portable High Performance. In SciTools, 1998. [bibtex-entry]


  14. Jeremy G. Siek and Andrew Lumsdaine. The Matrix Template Library: A Generic Programming Approach to High Performance Numerical Linear Algebra. In International Symposium on Computing in Object-Oriented Parallel Environments, number 1505 of Lecture Notes in Computer Science, pages 59--70, 1998. [bibtex-entry]


  15. Jeremy G. Siek and Andrew Lumsdaine. A Rational Approach to Portable High Performance: The Basic Linear Algebra Instruction Set (BLAIS) and the Fixed Algorithm Size Template (FAST) Library. In Parallel Object Oriented Scientific Computing, 1998. ECOOP. [bibtex-entry]


  16. Jeremy G. Siek and Andrew Lumsdaine. Generic Programming for High Performance Numerical Linear Algebra. In SciTools, 1998. [bibtex-entry]


  17. Jeremy G. Siek, Andrew Lumsdaine, and Lie-Quan Lee. Generic Programming for High Performance Numerical Linear Algebra. In Proceedings of the SIAM Workshop on Object Oriented Methods for Inter-operable Scientific and Engineering Computing (OO'98), 1998. SIAM Press. [bibtex-entry]


Internal reports
  1. Jeremy Siek, Douglas Gregor, Ronald Garcia, Jeremiah Willcock, Jaakko Järvi, and Andrew Lumsdaine. Concepts for C++0x. Technical report N1758=05-0018, ISO/IEC JTC 1, Information Technology, Subcommittee SC 22, Programming Language C++, 2005. [bibtex-entry]


  2. Jeremy Siek and Andrew Lumsdaine. Essential Language Support for Generic Programming: Formalization Part 1. Technical report 605, Indiana University, December 2004.
    Annotation: ``Concepts'' are an essential language feature needed to support generic programming in the large. Concepts allow for succinct expression of bounds on type parameters of generic algorithms, enable systematic organization of problem domain abstractions, and make generic algorithms easier to use. In this paper we formalize the design of a type system and semantics for concepts that is suitable for non-type-inferencing languages. Our design shares much in common with the type classes of Haskell, though our primary influence is from best practices in the \C pp{} community, where concepts are used to document type requirements for templates in generic libraries. The technical development in this paper defines an extension to System F and a type-directed translation from the extension back to System F. The translation is proved sound; the proof is written in the human readable but machine checkable Isar language and has been automatically verified by the Isabelle proof assistant. This document was generated directly from the Isar theory files using Isabelle's support for literate proofs.
    [bibtex-entry]


  3. Sibylle Schupp, Douglas Gregor, Brian Osman, David R. Musser, Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine. Concept-based Component Libraries and Optimizing Compilers. Technical report, RPI Computer Science Department Technical Report 02-02, 2002. [bibtex-entry]



BACK TO INDEX




Disclaimer:

This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All person copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.

Les documents contenus dans ces répertoires sont rendus disponibles par les auteurs qui y ont contribué en vue d'assurer la diffusion à temps de travaux savants et techniques sur une base non-commerciale. Les droits de copie et autres droits sont gardés par les auteurs et par les détenteurs du copyright, en dépit du fait qu'ils présentent ici leurs travaux sous forme électronique. Les personnes copiant ces informations doivent adhérer aux termes et contraintes couverts par le copyright de chaque auteur. Ces travaux ne peuvent pas être rendus disponibles ailleurs sans la permission explicite du détenteur du copyright.




Last modified: Wed Aug 24 20:40:47 2005
Author: jsiek.


This document was translated from BibTEX by bibtex2html