Brief introduction to (the procedural part of) C++

  1. [ slides ] Administrative aspects, "Hello World," Makefile
  2. [ slides ] [ blog post ] Types, declarations and definitions, control structures, references, pass-by-value and pass-by-reference.
  3. [ blog post ] Terminal control, enumerations, source files, programs, Makefile
  4. [ slides ] [ blog post ] Pointers and arrays
  5. [ slides ] 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 ] Client use of basic data structures: vector, stack, exceptions
    • Source files for all examples, including the Makefile are in this directory.

    Asymptotic analysis, basic algorithms on arrays, introductory iteration vs. recursion

  7. [ slides ] [ blog post ] Simple example of asymptotic analysis, Fibonacci sequence
  8. [ no slides, I'll use the white board ] Binary search, Merge Sort, solving recurrences by guess and induct and by recurrence tree
  9. [ no slides, I'll use the white board ] Growth of functions and asymptotic notations, getting used to comparing growth rates of functions
  10. [ slides ] [ blog post ] Search and Sorting, Heaps and Priority Queues, function template, callback function

    Vectors, lists, stack, and queue, more recursion vs. iteration

  11. [ slides ] [ blog post ] Vectors and amortized analysis
  12. [ slides ] Lists and C++ iterators

    Trees

  13. [ slides ] Binary trees and binary search trees: tree traversals, Huffman trees, counting trees, random BST
  14. [ slides ] AVL Trees, Red-Black Trees, (2,4)-Trees, Splay trees, Amortized analysis again

    Sets, Maps, Hash Tables

  15. slides ] Hash tables, applications
  16. Maps, sets, multi-maps

    Graphs (take 331, 431, 531)

  17. [ slides ] Graphs, graph traversal, applications
  18. [ slides ] Implementing the Graph ADT
  19. [ slides ] Weighted graphs

    Epilogue

  20. Final exam review