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
 Source files for Lexer and wellformed expression codes, including the
Makefile
are in this directory.
 Source files for a simple postfix evaluator, including the
Makefile
are in this directory.
Part 2. Analysis and algorithmic concepts and techniques

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

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

[ black board only ]
Solving recurrences by guess and induct and by recurrence tree

[ slides ]
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
 [ We will skip this ]
Maps, sets, multimaps
"Advanced" data structures
 [ slides ] Data structures on Disks,
and Btrees (Credits: all slides stolen from Prof.
Shivnath Babu's course at Duke, and from Prof.
Michael Franklin's course at Berkeley.)
 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