Lecture slides and notes
Part 1. Brief introduction to (the procedural part of) C++

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

[ slides ]
[ notes ]
Getting Started in C++: types, declarations and definitions, control structures, references, passbyvalue and passbyreference.

[ slides ]
[ notes ]
Terminal control, enumerations, source files, programs,
Makefile

[ slides ]
[ notes ]
Pointers and arrays

[ slides ]
[ notes ]
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 ]
[ notes ]
Client use of basic data structures:
vector
, stack
, exceptions
Part 2. Analysis and algorithmic concepts and techniques

[ slides ]
[ notes ]
Fibonacci sequence, introductory iteration and recursion.

[ slides ]
[ handout ]
Growth of functions and asymptotic notations, getting used to comparing
growth rates of functions

[ NO slides/notes ]
Solving recurrences by the recurrence tree method

[ slides ]
[ NO notes ]
Iteration and Recursion, examples on arrays/vectors, including
binary search and merge sort.

[ slides ]
[ notes ]
Asymptotic analysis and recurrence in action: searching and sorting, function template,
callback function
Part 3. Design and Analysis of Fundamental Data Structures
"Sequential" data structures: Vectors and lists

[ slides ]
[ notes ]
Vectors and amortized analysis

[ slides ]
[ notes ]
Lists and C++ iterators
Trees

[ slides ]
[ notes ]
Binary trees: basic operations and applications, tree
traversals, Huffman trees, counting trees

[ slides ]
[ notes ]
Heap, Heap Sort, Priority Queues

[ slides ]
[ notes ]
Basic binary search trees, counting BSTs

[ slides ]
[ notes ]
BSTs in depth: AVL Trees, RedBlack Trees, (2,4)Trees, Splay trees, Amortized
analysis again.
Sets, Maps, Hash Tables

[ slides ]
Hash tables, applications
 [ slides ] Maps, sets, multimaps
"Advanced" data structures

[ slides ]
[ notes ]
Data structures on Disks, and Btrees
 Augmented data structures and geometric problems
 Persistent data structures
Graphs (take 331, 429, 431, 529, 531)
 [ slides ] Graphs, graph traversal, applications
 [ slides ] Implementing the Graph ADT
 [ slides ] Weighted graphs
Epilogue

Final exam review