Introduction
Foundations
   1.1 Background
   1.2 Complexity
   1.3 Measurements
   1.4 Asymptotic Notation
   1.5 Recurrence Relations
   1.6 Assignment #1 (due We, Sept 29)
   1.7 Feasibility and Intractability
   1.8 Data Abstraction and Structure
Linear Structures
Lists
   2.1 Specification
   2.2 Array Representation
   2.3 One-way Linked Representation
   2.4 Circular One-way Linked Representation
   2.5 Doubly Linked Representation
Stacks
   3.1 Specification
   3.2 Array Representation
   3.3 One-way Linked Representation
Queues
   4.1 Specification
   4.2 Circular Array Representation
   4.3 Circular One-way Linked Representation
   4.4 Doubly Linked Representation
Trees
General Trees
   5.1 Properties
   5.2 Traversal
   5.3 Representations
   5.4 Demo Applets
   5.5 Assignment #2 (due We, Oct 6)
Selection Trees
   6.1 Modifying a Key
   6.2 Initialization
   6.3 Application: External Sort
Priority Queue Trees
Heaps
   7.1 Adding an Element
   7.2 Deleting an Element
   7.3 Initialization
   7.4 Applications
   7.5 Implementation
   7.6 Demo Applets
Height-Biased Leftist Trees
   8.1 Definitions
   8.2 Merging Height-Biased Leftist Trees
   8.3 Application: Priority Queues
   8.4 Weight-Biased Leftist Trees
   8.5 Assignment #3 (due We, Oct 13)
Search Trees
Binary Search Trees
   9.1 Characteristics
   9.2 Search
   9.3 Insertion
   9.4 Deletion
   9.5 Demo Applets
10 AVL Trees
   10.1 Definitions
   10.2 Height
   10.3 Rotations
   10.4 Insertions and Deletions
   10.5 Demo Applets
   10.6 Assignment #4 (due We, Oct 20)
11 Red-black Trees
   11.1 Properties
   11.2 Insertions
   11.3 Deletions
   11.4 Demo Applet
   11.5 Assignment #5 (due Fr, Oct 29)
12 Multi-way Trees
   12.1 Definition
   12.2 Insertions
   12.3 Deletions
13 B-Trees
   13.1 Definition
   13.2 Insertions
   13.3 Deletions
   13.4 Assignment #6 (due We, Nov 3)
Graphs
14 Graph Traversal
   14.1 Depth-First Traversal
   14.2 Breadth-First Traversal
   14.3 Representations of Graphs
   14.4 Demo Applets
15 Least Cost Spanning Trees
   15.1 Prim’s Algorithm
   15.2 Kruskal’s Algorithm
   15.3 Union-Find Algorithm
   15.4 Demo Applets and Resources
   15.5 Assignment #7 (due We, Nov 10)
General Algorithms
16 Brute Force Algorithms
   16.1 Sequential Search
   16.2 Hamilton Circuits
17 Greedy Algorithms
   17.1 Prim’s Minimal Spanning Tree Algorithm
   17.2 Kruskal’s Minimal Spanning Tree Algorithm
   17.3 Dijkstra’s Single-Source Shortest Paths Algorithm
   17.4 Coin Change
   17.5 Egyptian Fractions
   17.6 Map Coloring
   17.7 Voting Districts
   17.8 Vertex Cover
   17.9 0/1 Knapsack
   17.10 Demo Applets
18 Divide-and-Conquer Algorithms
   18.1 Merge Sort
   18.2 Quick Sort
   18.3 Tiling with L-Grouped Tiles
   18.4 Closest Pair
   18.5 Strassen’s Matrix Multiplication
   18.6 Assignment #8 (due We, Nov 17)
State Search Algorithms
19 Backtracking Algorithms
   19.1 Solution Spaces
   19.2 Traveling Salesperson
   19.3 The Queens Problem
   19.4 Convex Hull (Graham’s Scan)
   19.5 Generating Permutations
   19.6 Demo Applets
20 Branch-and-Bound Algorithms
   20.1 Cost-Based Tree Traversal
   20.2 Mazes
   20.3 Traveling Salesperson Problem
   20.4 Job Scheduling
   20.5 Integer Linear Programming
21 Dynamic Programming Algorithms
   21.1 Fibonnaci Numbers
   21.2 0/1 Knapsack Problem
   21.3 All Pairs Shortest Paths (Floyd-Warshall)
   21.4 Demo Applets
   21.5 Assignment #9 (due We, Dec 1)