According to the author, this book is an introduction to information and coding theory at the advanced undergraduate or the graduate level. It assumes a mathematical background in probability and modern algebra.

Roman writes well and has made an effort to provide a clear exposition of all topics. The typography facilitates reading and understanding of the text. Another helpful element is the sheer abundance of detailed examples, which are conducive to the comprehension of this difficult subject. The book contains some good references, a symbol index, and a detailed index. It also includes many exercises (some of them with hints) in each section.

This textbook is divided into two main parts: information theory, comprising the first three chapters, and coding theory, consisting of the next five chapters. In addition, a 38-page appendix covers modern algebra. A short introduction covers the noisy coding theorem and gives an example of Hamming codes.

Chapter 1 covers entropy and its properties. It also discusses the entropy of countably infinite probability distributions and so-called typical sequences. Chapter 2 addresses noiseless coding, which includes variable-length encoding with strings, codes and unique decipherability, and McMillan’s theorem. It also describes Huffman encoding and the noiseless coding theorem. Chapter 3, â€śNoisy Coding,” considers the question of how to encode some data efficiently and simultaneously minimize the probability of uncorrected errors when transmitting over a noisy channel. It includes topics such as mutual information and channel capacity and presents two versions of the noisy coding theorem with their proofs.

Part 2, on coding theory, starts with chapter 4, which presents some general remarks on codes, including minimum distance decoding, some remarks on combinatorial designs, and the main coding theory problem. Chapters 5 and 6 study linear codes in depth, addressing linear codes and their duals; weight distribution; maximum distance separable codes; Hamming and Golay codes; and Reed-Muller codes. Chapters 7 and 8 present finite fields and cyclic codes. They discuss basic properties of finite fields, irreducible polynomials over finite fields, the roots of unity and cyclic codes such as BCH codes, Reed-Solomon and Justesen codes, alternant codes, Goppa codes, and quadratic residue codes.

Overall, I recommend this book for the classroom. It should also be beneficial for the practitioner.