YPLEX
c++ syntax and semantics
scoping issues
taming dynamic memory
class templates
function templates
exceptions
standard library containers
storage considerations
memory organization (e.g. contiguous memory, linked, tree)
memory usage considerations
effects on the order of algorithms

operations
iteration
insertion (front, back, and internal)
searching
removing

BackInsertContainers
vector
list
deque
RandomAccessContainers
map
multimap
set
adaptors
stack
queue
allocators

iterator concepts
ForwardIterator
BidirectionalIterator
RandomAccessIterator
InputIterator
OutputIterator
adapters
back_insert_iterator
back_inserter convenience function
ostream_iterator
istream_iterator
generic programming
parametric polymorphism vs. virtual (run-time) polymorphism
parameterizing Policies (allocation, decisions, actions)
making objects and algorithms general using parameterized types, inheritance, virtual functions, and specialization
introduction to template meta-programming
function objects
generators
unary function objects
binary function objects
adaptable functions objects
examples
negate
plus
minus
times
divide
adapters
function object adapters allow more complex operations and predicates
classes
binder1st
binder2nd
convenience functions
bind1st (makes a binder1st)
bind2nd (makes a binder2nd)


generic algorithms
specifying iterators ranges.
input, output, both, or in-place operations.
parameterization of predicates and operations.
examples
fill
fill_n
copy
transform
transform_n
sort
accumulate





wrapper classes
encapsulating the unencapsulated
e.g. threading, sockets, URI, HTTP
given an unencapsulated set of functions, data structures, or even objects, encapsulate them

application classes
provide frameworks for entire applications.
reusable code for handling repetitious or tedious work.
handles "application" things (e.g. configuration, command-line arguments, exception handling, database connections, graphical environment initialization, etc...).

boost library
regular expressions
threading
smart pointers
threading
basic threading mechanism
problems to solve (e.g. race conditions, deadlocks)
tools to solve the problems (e.g. mutexes, locks, condition variables).
classical threading architecutes (e.g. consumer-producer problem).
bootstrapping from a procedural API (e.g. pthreads or WinSock) to a class library
introduction to boost::threads
using application classes with threads

network programming
basic socket manipulation
client-side vs. server-side
encapsulating sockets into a class library
building "protocol" classes (e.g. http)