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, pass-by-value and pass-by-reference.
-
[ 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, Red-Black Trees, (2,4)-Trees, Splay trees, Amortized
analysis again.
Sets, Maps, Hash Tables
-
[ slides ]
Hash tables, applications
- [ slides ] Maps, sets, multi-maps
"Advanced" data structures
-
[ slides ]
[ notes ]
Data structures on Disks, and B-trees
- 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