Gottfried Ungerboeck
Retired Technical Director, Broadcom Inc., Ph.D. - Swiss Federal Institute of Technology.


Shu Lin
Adjunct Professor, Department of Electrical and Computer Engineering, University of California, Davis. Ph.D. - Rice University.


Hamid Jafarkhani
Chancellor’s Professor, Electrical Engineering and Computer Science, University of California, Irvine. Ph.D. - University of Maryland at College Park.


Claude Berrou
Professor of Electrical Engineering, Telecom-Bretagne, France.


Kees Schouhamer Immink
President and founder of Turing Machines Inc., a Dutch-based research and consulting firm that contributes to science and technology., Ph.D. - Eindhoven University of Technology.


Elwyn Berlekamp
Professor emeritus of mathematics and EECS at the University of California, Berkeley. , Ph.D. - MIT.


Alexander Vardy
Jack K. Wolf Professor of Electrical and Computer Engineering at University of California San Diego, Ph.D. - Tel Aviv University.


Amin Shokrollahi
Full Professor of Mathematics and Computer Science, Swiss Federal Institute, Lausanne (EPFL), Ph.D. - Bonn.

Professor Shokrollar has kindly also provided “why I like it” comments for books he has suggested as follows:

  • “Introduction to Coding Theory” by the late J.H. van Lint. Why I like it: it is concisely written and full of excellent information, yet not overwhelming. The third edition also includes codes from algebraic geometry, again written in a concise and non-overwhelming way. The best place to read about algebraic coding theory if you are mathematically inclined.
  • “Algebraic Coding Theory” by E.R. Berlekamp. Why I like it: it is a classic and contains the original Reed-Solomon decoding algorithms much of which has been invented by the author. It is not easy to read; Berlekamp mixes efficiency with theory, but once you get over it, you find the many gems that are hidden in plain sight.
  • “Algebraic Function Fields and Codes” by H. Stichtenoth. Why I like it: it is a matter of taste. Academically, I grew up in a number theory community so the language of function fields is much easier for me to work in than the full machinery of algebraic geometry. This book introduces Goppa’s algebraic-geometric codes from this angle, using concise and precise mathematical objects.
  • “List decoding of error-correcting codes” by V. Guruswami. Why I like it: It is the definitive text on list decoding algorithms. It is written in the dialect used by theoretical computer scientists (perhaps another reason I like it), so sometimes difficult to read for a EE major. It has tons of really nice gems.
  • “Error Control Coding,” by S. Lin and D. Costello. Why I like it: it has tons of interesting practical applications of coding theory. An eye opener for someone who has entered the field through the pure math door.
  • “Raptor Codes” by A. Shokrollahi and M. Luby. Why I like it: I don’t really like promoting my own work, but this is the only book dedicated to the topic of Fountain Codes, so, good or bad, it is the only place where one can learn about these codes in a book.

Thomas Kailath
Hitachi America Emeritus Professor of Engineering, Department of Electrical Engineering at Stanford University. Sc.D. - MIT.


Muriel Medard
Cecil H. Green Professor in the Electrical Engineering and Computer Science (EECS) Department at MIT. Sc.D. MIT.

Note: the following books are not recommended by Professor Médard. They are books that have been used as reference texts in one/some courses she has taught.


David Tse
Thomas Kailath and Guanghan Xu Professor in the School of Engineering Department of Electrical Engineering, Stanford University, Ph.D. - MIT.

Note: the following books are not recommended by Professor Tse. They are books that have been used as reference texts in one/some courses he has taught.


Error control coding is a technique used to detect and correct errors that may occur in digital communications and storage systems. The goal of error control coding is to add redundant information to the original data in such a way that errors can be detected and corrected. There are two main types of error control codes: error detection codes and error correction codes.

Error detection codes, such as parity codes and checksum codes, are used to detect errors in the received data. These codes add redundant information to the original data, which can be used to check the integrity of the data upon receipt. For example, a parity code can be used to add a single bit to a group of bits, such that the number of 1’s in the group is always even or always odd. If an error occurs in the transmission of the data, the parity bit will indicate that the data is incorrect.

Error correction codes, such as Hamming codes and Reed-Solomon codes, are used to correct errors in the received data. These codes add more redundant information to the original data than error detection codes, which allows for the correction of multiple errors. For example, a Hamming code can be used to add extra bits to a group of bits such that any single-bit error can be detected and corrected.

Error control coding is widely used in digital communication systems, such as mobile phones, wireless networks, and satellite communications. In addition, it is also used in storage systems, such as hard disk drives and flash memory devices. The use of error control codes can greatly improve the reliability and performance of these systems by detecting and correcting errors that may occur during transmission or storage.

Some additional method used to implement Error Control Coding is Convolutional coding, Turbo coding, and LDPC(Low-density parity-check) coding which are often used in telecommunications, storage, and broadcast systems such as satellite, cable and wireless modems, and disk drive memory. These techniques are more powerful, and more efficient than the traditional methods because they are able to correct more errors and have a lower error rate.