Class lectures:
Tuesdays, Thursdays 11:00am - 12:20am Center 212
The purpose of lectures is to introduce the basic material we will be covering in this course. We will test your knowledge of 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!
The lecture notes below are in HTML and PDF format. (I revise my lecture notes every quarter, and so they may not be available here much in advance of the lecture itself. If you need a PDF reader for your own browser, you can download Acrobat Reader for free from Adobe .)
| Lecture 1 | Thu Sep 24 | (HTML) (PDF) |
Introduction; Structure and requirements of the course; Overview of trees and their properties. |
| Lecture 2 | Tue Sep 29 | (HTML) (PDF) |
Trees for representation; Tries, decision and classification trees, discrimination nets; alphabet tries; Huffman coding. (Reading: Weiss Ch. 10) |
| Lecture 3 | Thu Oct 01 | (HTML) (PDF) |
Analysis of Huffman coding; Priority queues; Heaps; Dynamic data and array representations of Huffman tries. (Reading: Weiss Ch. 6 and Ch. 10) |
| Lecture 4 | Tue Oct 06 | (HTML) (PDF) |
Java I/O; I/O buffering; Bitwise I/O. (Reading: online documentation) |
| Lecture 5 | Thu Oct 08 | (HTML) (PDF) |
Analysis of binary search trees; balance; AVL trees and AVL rotations; AVL insertion. (Reading: Weiss Ch. 4) |
| Lecture 6 | Tue Oct 13 | (HTML) (PDF) |
Random number generation; Randomized data structures; Skip lists; Analysis of skip lists. (Reading: Pugh paper; Weiss Ch. 10) |
| Lecture 7 | Thu Oct 15 | (HTML) (PDF) |
Data structure and algorithm libraries; Java Collections framework; Java generics; Iterators; Designing iterators for lists and trees. (Reading: Weiss Ch. 1 and Ch. 3; online documentation) |
| Lecture 8 | Tue Oct 20 | (HTML) (PDF) |
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 9 | Thu Oct 22 | (HTML) (PDF) |
Red-black trees; Analysis of red-black trees; insert algorithm for red-black trees. (Reading: Weiss Ch. 12) |
| Lecture 10 | Tue Oct 27 | (HTML) (PDF) |
Red-black trees; Analysis of red-black trees; insert algorithm for red-black trees. (Reading: Weiss Ch. 12) |
| Midterm exam | Thu Oct 29 | ||
| Lecture 11 | Tue Nov 03 | (HTML) (PDF) |
Graphs; vertices, edges, paths, cycles; Sparse and dense graphs; Adjacency matrices and adjacency lists; implementations. (Reading: Weiss, Ch. 9) |
| Lecture 12 | Thu Nov 05 | (HTML) (PDF) |
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 10 | (HTML) (PDF) |
Radix search; digital search trees; multiway tries; ternary tries. |
| Lecture 14 | Thu Nov 12 | (HTML) (PDF) |
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 15 | Tue Nov 17 | (HTML) (PDF) |
Applications of disjoint subsets; union-by-height and union-by-size; Find with path compression; Amortized cost analysis. (Reading: Weiss, Ch. 8) |
| Lecture 16 | Thu Nov 19 | (HTML) (PDF) |
Time costs in a memory hierarchy; B-trees; B-tree find, insert, delete; 2-3 trees; Analysis of B-trees. (Reading: Weiss, Ch. 4) |
| Lecture 17 | Tue Nov 24 | (HTML) (PDF) |
Hashing; hash table and hash function design; Hash functions for integers and strings; Open addressing collision resolution strategies; Analysis of hashing. (Reading: Weiss, Ch. 5) |
| University holiday | Thu Nov 26 | ||
| Lecture 18 | Tue Dec 01 | (HTML) (PDF) |
Separate chaining; Dictionary data types; Hashtables vs. balanced search trees; Hash table implementations; Object serialization. (Reading: Weiss, Ch. 5) |
| Lecture 19 | Thu Dec 03 | (HTML) (PDF) |
Self-organizing data structures; self-organizing lists; Splay trees; Spatial data structures; K-D trees; The C++ STL. (Reading: Weiss, Ch. 4 and Ch. 12); Final review. |