Generic Programming Training Course
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.
One year minimum C++ experience. Some experience using and writing templates. This is a challenging course, most appropriate for intermediate and advanced C++ programmers.
Five days of lectures and hands-on exercises.
- 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
Details and duration of this course can be adjusted to accomodate your schedule, interests, and specific development challenges.