### Brief introduction to (the procedural part of) C++

- [ slides ]
Administrative aspects, "Hello World", Makefile
- [ slides ] [
blog post ]
Types, declarations and definitions, control structures,
references, pass-by-value and pass-by-reference.
- [ blog post ] Terminal control, Enumerations, source files, programs, Makefile
- [ slides ] [ blog post ] Pointers and arrays
- [ slides ] [ blog post ] Structures, function pointers, our first C++ class: a Lexer, map
- Source files for all examples, including the
`Makefile`

are in
this directory.

- [ slides ] [ blog post ] Client use of basic data structures: vector, stack, exceptions
- Source files for all examples, including the
`Makefile`

are in this directory.

### Asymptotic analysis, recursion, and basic algorithms

- [ slides ] [ blog
post ] Simple example of asymptotic analysis,
Fibonacci sequence
- [ slides ] Growth of functions and
asymptotic notations, getting used to comparing functions
- [ slides ] Binary search,
solving recurrences by guess and induct
- [ slides ] Sorting algorithms,
function template, callback function

### Vectors, lists, stack, and queue

- [ blog post ] Vectors and amortized analysis
- [ blog post ] Lists and C++ iterators

### Trees

- [ slides ] [ blog
post ] Binary trees
and binary search trees: tree traversals, Huffman trees, counting trees,
random BST
- [ slides ] [ blog
post ] AVL Trees, Red-Black Trees, (2,4)-Trees, Splay trees, Amortized
analysis again
- [ slides ] Heaps and Priority Queues (will skip this unless time allows in
the end)

### Sets, Maps, Hash Tables

- [ slides ] Hash tables, applications

### Graphs (take 331, 431, 531)

- [ slides ] Graphs, graph traversal, applications
- [ slides ] Implementing the Graph ADT
- [ slides ] Weighted graphs

### Epilogue