The purpose of lectures is to introduce the basic material we
will be covering in this course.
You will be responsible for this material on the exams, and
you will need to know it to do the programming assignments.
The only reason to come to lecture is to learn something about
this material. If you're not interested in that, don't waste
your time. The basic rule is: Listen or leave.
Lecture 1 | Thu Sep 22 |
|
Introduction; Structure and requirements of the course;
Overview of trees and their properties. |
Lecture 2 | Tue Sep 27 |
|
The C++ programming language; comparison of C++ and Java; introduction
to OO programming in C++. (Reading: Weiss Ch 1) |
Lecture 3 | Thu Sep 29 |
|
Binary search trees; basic operations on BST's; BST's, C++ iterators,
and the BST successor function.
(Reading: Weiss Ch. 4) |
Lecture 4 | Tue Oct 04 |
|
Analysis of binary search trees; balance; AVL trees and AVL rotations;
AVL insertion.
(Reading: Weiss Ch. 4) |
Lecture 5 | Thu Oct 06 |
|
Treaps; Find, insert, delete, split, and join in treaps; Randomized
search trees; Analysis of randomized search trees.
(Reading: Aragon and Seidel paper; Weiss Ch. 12) |
Lecture 6 | Tue Oct 11 |
|
Random number generation; Randomized data structures; Skip lists;
Analysis of skip lists.
(Reading: Pugh paper; Weiss Ch. 10) |
Lecture 7 | Thu Oct 13 |
|
Red-black trees; Analysis of red-black trees; operations on
red-black trees.
(Reading: Weiss Ch. 12) |
Lecture 8 | Tue Oct 18 |
|
Trees for representation; Tries, decision and classification trees,
discrimination nets; alphabet tries; Huffman coding.
(Reading: Weiss Ch. 10) |
Lecture 9 | Thu Oct 20 |
|
Analysis of Huffman coding; Priority queues; Heaps; Dynamic data and
array representations of Huffman tries.
(Reading: Weiss Ch. 6 and Ch. 10) |
Lecture 10 | Tue Oct 25 |
|
I/O in C++; C++ standard library I/O classes;
Binary and text file I/O;
Buffering; Bitwise I/O.
(Reading: C++ I/O documentation) |
Midterm exam | Thu Oct 27 |
Lecture 11 | Tue Nov 01 |
|
Intro to Graphs; vertices, edges, paths, cycles; Sparse and dense graphs;
Adjacency matrices and adjacency lists.
(Reading: Weiss, Ch. 9) |
Lecture 12 | Thu Nov 03 |
|
Algorithms on graphs; breadth-first, depth-first search; shortest path
in unweighted graphs; greedy algorithms; Djikstra's algorithm for shortest
paths in weighted graphs.
(Reading: Weiss, Ch. 9, Ch. 10) |
Lecture 13 | Tue Nov 08 |
|
Connectedness in graphs; spanning trees; Prim's and Kruskal's algorithms
for finding minimum cost spanning trees; disjoint subset data
structures and union-find;
Analysis of graph algorithms and NP-completeness.
(Reading: Weiss, Ch. 8, Ch. 9) |
Lecture 14 | Thu Nov 10 |
|
Applications of disjoint subsets; union-by-height and union-by-size;
Find with path compression; Amortized cost analysis.
(Reading: Weiss, Ch. 8) |
Lecture 15 | Tue Nov 15 |
|
Radix search; digital search trees, multiway tries, ternary tries
and their properties.
|
Lecture 16 | Thu Nov 17 |
|
Hashing; hash table and hash function design; Hash functions for integers
and strings; Open addressing and separate chaining collision resolution
strategies; Analysis of hashing.
(Reading: Weiss, Ch. 5) |
Lecture 17 | Tue Nov 22 |
|
Time costs in a memory hierarchy; B-trees; B-tree find, insert, delete;
2-3 trees; Analysis of B-trees.
(Reading: Weiss, Ch. 4) |
University holiday | Thu Nov 24 |
Lecture 18 | Tue Nov 29 |
|
Self-organizing data structures; self-organizing lists; Splay trees;
Spatial data structures; K-D trees.
(Reading: Weiss, Ch. 4 and Ch. 12) |
Lecture 19 | Thu Dec 01 |
|
Final review. |