Resources

Interested in data compression? Great! We list a few resources (apart from the lecture notes) which might be useful to take a look.

NOTE: If you find a resource which you found useful and is not listed here, please file an github issue at https://github.com/stanfordDataCompressionClass/notes.

1. Software

A great way to learn about data compression is to play around with the compression algorithms themselves.

  1. Stanford compression Library: A library of compression algorithms implemented in native python for accessibility and educational purpose. Take a look at the tutorials (in progress) to get started! We will also be using the library as a basis for the course assignments.
  2. Audio Compression code/book A python based implementation of audio compression, in form of tutorials.
  3. Introduction to Digital Video compression: Great hands-on tutorial on digital video coding.
  4. H264 in Python: Experimental implementation of H264 in pure Python

2. Video Resources

Interested in data compression? Here are some nice youtube videos to watch to get an introduction. Most of them are beginner-friendly and are useful to get a sense of the data compression.

Here are a set of videos to watch at leisure to get an intuition for compression:

  1. Compressor Head playlist: This is a series of short talks by a google engineer. Very good introductory videos
  2. Huffman Coding (Tom Scott): I love Tom Scott and how well he explains things. Here is a nice video on Huffman coding
  3. Why Snow looks terrible on video, Why Night scenes look bad on video: Very nice two videos by Tom Scott again which gives a brief peek into video compression algorithms
  4. PNG Image Compression: video on PNG lossless compression
  5. JPEG compression: A bit more detailed video on JPEG compression
  6. Arithmetic coding series: Great sequence of lectures Information theory in general and particularly on Arithmetic coding. One of the best I found on this subject.

3. Textbooks, research papers

Although there are no textbooks which exactly correspond to the course material, but here are few books which might be relevant.

  1. Elements of Information Theory: Classic textbook on Information Theory
  2. Introduction to Data Compression, Guy E. Blelloch: Set of lecture notes/book on Data Compression by Guy E. Blelloch, CMU 2013
  3. Data Compression Explained, Matt Mahoney: A nice set of lecture notes on Data Compression by Matt Mahoney.
  4. JPEG paper: Summary of JPEG by Gregory K. Wallace

4. Blogs/websites

The web is filled with great engineers and researchers writing blogs related to Data Compression. We list a few below:

  1. Christopher Olah's Blog: A fun visual introduction to Information Theory.
  2. Yann Collet's Blog: Great blog by Yann Collet on implemeting fast and efficient data compression algorithms
  3. Fabian Giesen's blog: Blog by Fabian Giesen. (The parts related to rANS implementation are particularly great!)
  4. On understanding zlib: Introduction to zlib by Euccas Chen.
  5. Modern LZ Compression: Walk-through of modern LZ compressors by Gary Linscott.
  6. DCT: A nice blog post on DCT by Prof. Dr. Edmund Weitz
  7. DCT History: A small red on the history of DCT by Nasir Ahmed.