Topics:

1. Introduction to Data Compression
The Data-Compression Lexicon, with a History
The Two Kingdoms
Data Compression = Modeling + Coding
The Dawn Age
Coding

2. An Improvement
Modeling
Statistical Modeling
Dictionary Schemes
Ziv and Lempel
LZ77
LZ78
Lossy Compression
Programs to Know
The Dawn Age: Minimum Redundancy Coding
The Shannon-Fano Algorithm
The Huffman Algorithm
Huffman in C
BITIO.C

3. A Reminder about Prototypes
Counting the Symbols
Saving the Counts
Building the Tree
Using the Tree
The Compression Code
Putting It All Together
Performance

4. A Significant Improvement: Adaptive Huffman Coding
Adaptive Coding
Updating the Huffman Tree
What Swapping Does

Huffman One Better: Arithmetic Coding
Difficulties
Arithmetic Coding: A Step Forward
Practical Matters
A Complication
Decoding
The Code

5. Statistical Modeling
Higher-Order Modeling
Finite Context Modeling
Adaptive Modeling
A Simple Example
Using the Escape Code as a Fallback
Improvements
Highest-Order Modeling
Updating the Model
Escape Probabilities
Scoreboarding
Data Structures
The Finishing Touches: Tables –1 and –2
Model Flushing
Implementation
Conclusions
Enhancement
ARITH-N Listing

6. Dictionary-Based Compression
An Example
Sliding Window Compression
The Algorithm
Problems with LZ77
An Encoding Problem
LZSS Compression
Data Structures
A Balancing Act
Greedy vs. Best Possible
The Code
Constants and Macros
Global Variables
The Compression Code
Initialization
The Main Loop
The Exit Code
AddString()
DeleteString()
Binary Tree Support Routines
The Expansion Routine
Improvements
The Code

7. LZ78 Compression
Can LZ77 Improve?
Enter LZ78
LZ78 Details
LZ78 Implementation
An Effective Variant
Decompression
The Catch
LZW Implementation
Tree Maintenance and Navigation
Compression
Decompression
The Code
Improvements
Patents

8. Speech Compression
Digital Audio Concepts
Fundamentals
Sampling Variables
PC-Based Sound
Lossless Compression of Sound

Each topic is covered in one two- hour meeting for a total of 16 hours.