Revised Schedule

Week Date Lecture # Topic Assignment
1 Mar 27 1
  • Introduction & Review
    • complexity theory (performance)
    • software complexity (cognitive load)
    • C++ toolchain
      • separate compilation
      • preprocessor
Mar 29 2
  • Dictionaries
    • binary search
    • binary search trees
2 Apr 3 3
  • Dictionaries (cont.)
    • balanced binary search trees
      • AVL
      • red-black
Apr 5 4
  • Dictionaries (cont.)
    • B-trees
3 Apr 10 5
  • Dictionaries (cont.)
    • AVL Trees (cont.)
    • Red-Black Trees
Apr 12 6
  • Dictionaries (cont.)
    • 2-3 Trees
4 Apr 17 7
  • Priority Queues
    • binary heaps
Assignment 1
due Apr 16
Apr 19 8
  • Data Compression
    • Huffman coding
5 Apr 24 9
  • Graphs
    • depth-first search
    • breadth-first search
Apr 26 10
  • Midterm Review
6 May 1 11
  • Midterm
May 3 12
  • Graphs (cont.)
    • Dijkstra's algorithm
7 May 8 13
  • More on Dictionaries
    • tries
Assignment 2
due May 9
May 10 14
  • More on Dictionaries (cont.)
    • hashing
8 May 15 15
  • Object Orientation
    • pointers & polymorphism
May 17 16
  • Object-Orientation (cont.)
    • idioms & patterns
    • design principles
9 May 22 17
  • Regular Expressions
Assignment 3
due May 23
May 24 18
  • Finite-State Automata
10 May 29 19
  • Context-Free Grammars
  • Turing Machines
May 31 20
  • Wrap-Up & Final Review
Jun 5
  • Final Exam