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

[ slides ]
Administrative aspects, "Hello World," Makefile

[ slides ]
[ blog post ]
Types, declarations and definitions, control structures,
references, passbyvalue and passbyreference.

[ blog post ]
Terminal control, enumerations, source files, programs, Makefile

[ slides ] [ blog post ]
Pointers and arrays

[ slides ]
Structures, function pointers, our first C++ class: a Lexer, client use of
map
 Source files for all examples, including the
Makefile
are in
this directory.

[ slides ]
Client use of basic data structures:
vector
, stack
, exceptions
 Source files for all examples, including the
Makefile
are in this directory.
Asymptotic analysis, basic algorithms on arrays, introductory iteration vs. recursion

[ slides ] [ blog post ]
Simple example of asymptotic analysis, Fibonacci sequence

[ no slides, I'll use the white board ]
Binary search, Merge Sort,
solving recurrences by guess and induct and by recurrence tree

[ no slides, I'll use the white board ]
Growth of functions and
asymptotic notations, getting used to comparing growth rates of functions

[ slides ]
[ blog post ]
Search and Sorting, Heaps and Priority Queues,
function template, callback function
Vectors, lists, stack, and queue, more recursion vs. iteration

[ slides ] [ blog post ]
Vectors and amortized analysis

[ slides ]
Lists and C++ iterators
Trees
 [ slides ]
Binary trees and binary search trees: tree traversals, Huffman trees, counting trees, random BST

[ slides ]
AVL Trees, RedBlack Trees, (2,4)Trees, Splay trees, Amortized analysis again
Sets, Maps, Hash Tables

slides ]
Hash tables, applications

Maps, sets, multimaps
Graphs (take 331, 431, 531)
 [ slides ] Graphs, graph traversal, applications
 [ slides ] Implementing the Graph ADT
 [ slides ] Weighted graphs
Epilogue

Final exam review