Introduction
1
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
2
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
3
Stacks
3.1
Specification
3.2
Array Representation
3.3
One-way Linked Representation
4
Queues
4.1
Specification
4.2
Circular Array Representation
4.3
Circular One-way Linked Representation
4.4
Doubly Linked Representation
Trees
5
General Trees
5.1
Properties
5.2
Traversal
5.3
Representations
5.4
Demo Applets
5.5
Assignment #2 (due We, Oct 6)
6
Selection Trees
6.1
Modifying a Key
6.2
Initialization
6.3
Application: External Sort
Priority Queue Trees
7
Heaps
7.1
Adding an Element
7.2
Deleting an Element
7.3
Initialization
7.4
Applications
7.5
Implementation
7.6
Demo Applets
8
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
9
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)