Lecture slides and notes

    Part 1. Brief introduction to (the procedural part of) C++

  1. [ slides ] Administrative aspects, "Hello World", Makefile
  2. [ slides ] [ notes ] Getting Started in C++: types, declarations and definitions, control structures, references, pass-by-value and pass-by-reference.
  3. [ slides ] [ notes ] Terminal control, enumerations, source files, programs, Makefile
  4. [ slides ] [ notes ] Pointers and arrays
  5. [ 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.
  6. [ slides ] [ notes ] Client use of basic data structures: vector, stack, exceptions

    Part 2. Analysis and algorithmic concepts and techniques

  7. [ slides ] [ notes ] Fibonacci sequence, introductory iteration and recursion.
  8. [ slides ] [ handout ] Growth of functions and asymptotic notations, getting used to comparing growth rates of functions
  9. [ NO slides/notes ] Solving recurrences by the recurrence tree method
  10. [ slides ] [ NO notes ] Iteration and Recursion, examples on arrays/vectors, including binary search and merge sort.
  11. [ 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

  12. [ slides ] [ notes ] Vectors and amortized analysis
  13. [ slides ] [ notes ] Lists and C++ iterators

    Trees

  14. [ slides ] [ notes ] Binary trees: basic operations and applications, tree traversals, Huffman trees, counting trees
  15. [ slides ] [ notes ] Heap, Heap Sort, Priority Queues
  16. [ slides ] [ notes ] Basic binary search trees, counting BSTs
  17. [ slides ] [ notes ] BSTs in depth: AVL Trees, Red-Black Trees, (2,4)-Trees, Splay trees, Amortized analysis again.

    Sets, Maps, Hash Tables

  18. [ slides ] Hash tables, applications
  19. [ slides ] Maps, sets, multi-maps

    "Advanced" data structures

  20. [ slides ] [ notes ] Data structures on Disks, and B-trees
  21. Augmented data structures and geometric problems
  22. Persistent data structures

    Graphs (take 331, 429, 431, 529, 531)

  23. [ slides ] Graphs, graph traversal, applications
  24. [ slides ] Implementing the Graph ADT
  25. [ slides ] Weighted graphs

    Epilogue

  26. Final exam review