Index
C++ topics
Template code trimming
Smart Pointers — Intro (templates, STL, TR1)
Notes on shared_ptr< T >
Managed memory and shared_ptr
Using const_pointer_cast
Using static_pointer_cast
static_pointer_cast
Class factories and shared_ptr
Specializing make_shared< T > and allocate_shared< T >
Arrays, shared_ptr< T >s, and deleters (STL, TR1)
Tuples and structs (TR1, C++0x)
Variadic tuple<..> — clever vs obvious
Variadic tuple<..> — the get
Variadic tuple<..> — imperative meta programming
Exactly when are templates expanded?
Template programming with MPL — XOR example (tutorial, Boost)
Defining const_cast
Improved const_cast
C++ — cast_away_const(..) revisited (templates)
C++ — cast_away_const(..) (templates)
Boost — member_object_pointer_traits
Bugs in C++ — returned memory refs
Function types in C++ (STL)
Using templates to define an array class with constructors
Using BOOST_PP_.. macros to define an array class with constructors
Recursive inline expansion (templates vs macros)
Template specialization
Template recursion
The C++ preprocessor – recursive includes
The C++ preprocessor – recursion
The C++ preprocessor – undefined tokens
Graphics, Diagrams, Visualizations
Fractal curve — Sierpinski arrowhead (C++, template)
Fractal curve — Koch snowflake (C++, template)
General programming
Tail recursion (Erlang, C++)
Transformative pattern: re-factoring a function to make it tail recursive (Erlang)
Erlang as C++ code generator
Templates and the C++ syntax tree (defining a DOM for C++ programs and a macro (scripting) language
Variadic tuple<..> — imperative meta programming (DOM for C++ and scripting)
Tic-tac-toe in Erlang
Introduction
Top-level loop
User input
Board display
Board abstraction
Game abstraction
Next move calculations and predictions
Game space search
Parallel processing
Game space symmetries
Full game space
Smart game space
Alternative rules
Predicted outcome abstraction
Utilities to introduce randomness
Macros for testing and debugging
Parallel programming
Tic-tac-toe in Erlang — parallel processing
Why is parallel programming difficult?
We’re not used to thinking parallel
Meta functions and parallel programming: map, filter, and reduce
MPI — Message Passing Interface, Multi Process Interface
Notes on MPI
MPI Object Types
Communicators
Datatypes
Files
Wins (shared memory windows)
Group (group of processes)
Request
Info
Op (operator)
Home process (one-of-a-kind object)
Process reference
Port
Status
Error code
Topology (attached to some communicators)
Attribute key (integer value chosen by MPI)
Request group (group of request objects)
Message content
Buffer
Miscellaneous
Infinite sums, integer sequences
Freeman Dyson and 1/19
Crossing the street — what are the odds?
Home Depot’s decline?
Inventions and innovations that shaped history
Collectivist societies, Deming, and Agile development