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 ] [ blog post ] Structures, function pointers, our first C++ class: a Lexer, map
    • Source files for all examples, including the Makefile are in this directory.
  6. [ slides ] [ blog post ] Client use of basic data structures: vector, stack, exceptions
    • Source files for all examples, including the Makefile are in this directory.

Asymptotic analysis, recursion, and basic algorithms

  1. [ slides ] [ blog post ] Simple example of asymptotic analysis, Fibonacci sequence
  2. [ slides ] Growth of functions and asymptotic notations, getting used to comparing functions
  3. [ slides ] Binary search, solving recurrences by guess and induct
  4. [ slides ] Sorting algorithms, function template, callback function

Vectors, lists, stack, and queue

  1. [ blog post ] Vectors and amortized analysis
  2. [ blog post ] Lists and C++ iterators

Trees

  1. [ slides ] [ blog post ] Binary trees and binary search trees: tree traversals, Huffman trees, counting trees, random BST
  2. [ slides ] [ blog post ] AVL Trees, Red-Black Trees, (2,4)-Trees, Splay trees, Amortized analysis again
  3. [ slides ] Heaps and Priority Queues (will skip this unless time allows in the end)

Sets, Maps, Hash Tables

Graphs (take 331, 431, 531)

  1. [ slides ] Graphs, graph traversal, applications
  2. [ slides ] Implementing the Graph ADT
  3. [ slides ] Weighted graphs

Epilogue