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
- Source files for Lexer and well-formed 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, Red-Black Trees, (2,4)-Trees, Splay trees, Amortized
analysis again.
Sets, Maps, Hash Tables
-
[ slides ] Hash tables, applications
- [ We will skip this ]
Maps, sets, multi-maps
"Advanced" data structures
- [ slides ] Data structures on Disks,
and B-trees (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