BoostPro Computing

BoostCon 2010

Generic Programming

An intensive hands-on course exploring the design, use, and methodology of high-performance reusable software libraries in C++.

  • maximize software generality while also maximizing performance
  • more powerfully use generic libraries such as the STL and many of the Boost libraries.
  • gain first-hand experience writing template software
  • be prepared for some of the most important language features in the upcoming 2nd C++ international standard.

Prerequisites

One year minimum C++ experience. Some experience using and writing templates. This is a challenging course, most appropriate for intermediate and advanced C++ programmers.

Format

Five days of lectures and hands-on exercises.

Topics

  • Origins and Structure of the STL
  • Algorithm Oriented Design
  • “Lifting” and the Generic Programming Process
  • The Role of Abstraction in Correctness and Efficiency
  • Concepts, Models, and Concept Refinement
  • Complexity Analysis
  • Associated Types
  • Template Errors, Concept Checking, and Concept Archetypes
  • Algorithm Refinement (or Specialization)
  • The Role of Views and Adaptors in Algorithm Reuse
  • Creating Iterators
  • Iterator Adaptors
  • External Adaptation and Retroactive Concept Mapping
  • Implementation Selection Using Tag Dispatching
  • Implementation Selection Using SFINAE
  • Library Customization Points Using Argument Dependent Lookup
  • Library Customization Points Using Traits
  • Case Study of the Boost Graph Library
  • Sparse Matrices as Graphs with Matlab-BGL
  • Static and Dynamic Polymorphism
  • Type Erasure
  • Upcoming C++ Features Supporting Generic Programming


Note

Details and duration of this course can be adjusted to accomodate your schedule, interests, and specific development challenges.

News

  • BoostCon 2011: Save the Date

    Mark your calendars! BoostCon 2011 is scheduled for May 15-20, 2011 in Aspen, Colorado.

    More...

  • C++ Next Blog update

    Dave and Sean Parent have organized a study group for Elements of Programming. Are you in?

    More...

  • C++0x, Hot or Not?

    Dave recently visited Sioux Embedded Systems in the Netherlands.

    More...