main page  —  CS 566 Efficient Algorithms

Unit 8: Clever Codes

This is an archived version of this module from Winter 2024-25.

This unit covers techniques to represent information via bits.

  • arithmetic coding
  • code-distance lower bounds
  • parity bits
  • Hamming codes

Learning outcomes

  1. Understand the principles of arithmetic coding and where it is applicable.
  2. Understand the context of error-prone communication.
  3. Understand concepts of error-detecting codes and error-correcting codes.
  4. Know and understand the terminology of block codes.
  5. Know and understand Hamming codes, in particular (7,4) Hamming code.
  6. Reason about the suitability of a code for an application.

Material


Further reading and sources

The exposition of arithmetic coding and Hamming codes is my own, with heavy inspiration from the following great book on codes (and much more):

Hamming codes are very nicely explained by 3Blue1Brown:

The code for practical arithmetic coding is taken from


Unit 7  ⋅  Syllabus  ⋅  Unit 9