{'fraction_non_alphanumeric': 0.023209736767619588, 'fraction_numerical': 0.005660911406736484, 'mean_word_length': 5.135416666666667, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Codes for Mass Data Storage Systems (Second Edition) (K. H. Schouhamer Immink; 2004) [Book review]

Coding, especially forward error correcting coding (FEC), has become a key element in wireless and mobile system design. No wonder that numerous books exist on this still-developing subject. Some of the books are overloaded with system or channel details, while others are quickly outdated because they concentrate on too specific subjects. In the early days of coding theory the focus was mostly on algebraic structures of codes and algebraic decoders rather than on probabilistic decoding algorithms, which in a wireless system should use soft-decisions and channel state information. Professor Biglieri avoids all these pitfalls in his book and concentrates on the essentials. As he states in the introduction his leitmotiv is “soft-decodable codes described through graphical structures (trellises and factor graphs).” This leitmotiv is visible throughout the book. He avoids overloaded notations with several superand subscripts and circumvents lengthy uninspiring proofs following Kac’s statement: “A proof is what convinces a reasonable reader, a rigorous proof is one which convinces an unreasonable reader.” I believe here he is in line with Shannon. And furthermore, he introduces the reader slowly into the deeper understanding of a subject by starting each chapter with a tour d’horizon, an introduction or some preliminaries. Prof. Biglieri’s book could be further characterized in most chapters by a statement attributed to Einstein (?) “Everything should be made as simple as possible but not simpler.” He also guides the reader throughout his book by marking with an asterisk those chapters about which the reader should gain a full understanding. The book starts with a brief introduction on fading channels giving all the essential parameters of such channel which will be further detailed later in Chapter 4. Chapter 3 is the classical treatment of coding in signal space introducing all the facts about bandwidth, SNR, and constellations. The essentials of trellis and convolutional codes are explained in Chapters 5 and 6. Although he concentrates on the basics, he does not forget to include tailbiting and thus introduces the link to block codes. Trellis coded modulation in the sense of Ungerboeck is treated in Chapter 7. Biglieri almost downplays his own 1998 contribution of bit-interleaved coded modulation that performs very close to capacity and can be elegantly implemented by doing turbo iterations between the demapper and the decoder. The up-to-date coding theory starts in the following chapter “Codes on graphs” introducing factor graphs and Tanner graphs, the sum-product algorithm and its derivates such as the BCJR and the min-sum algorithm. Everything in this chapter is explained beautifully with a minimal but sufficient notation and small but enlightening examples. Chapter 9 contains an up-to-date description of LDPC codes and parallel concatenated codes (so-called turbo codes) including the ten Brink’s EXIT charts, an important tool for analyzing the behavior in the waterfall region. In the last chapter where the important subject of multiple antennas is treated, the book comes closer to a research monograph rather than an introductory course for master students. This is especially true for Chapter 10.6 on nonergodic Rayleigh fading and Chapter 10.7 on imperfect channel state information. This might go beyond an introductory course, but an instructor might nevertheless benefit