lity of error in this way. A better solution is usually to use Error Control Coding (ECC). Principles of ECC Error Control Coding is the controlled addition of redundancy to the transmitted digit stream in such a way that errors in the received digits can be detected, and in certain cir- cumstances corrected, in the receiver. It is therefore one aspect of channel coding, SO called because it compensates for imperfections in the channel. The other form of channel coding is transmission (or line) coding, which has different objectives, such as spectrum shaping of the transmitted signal. The benefit of ECC is that it reduces the probability of error in the digits output by the receiver. The added redundancy means, however, that extra digits have to be transmitted over the channel, SO either the channel transmission rate must be increased or the rate of transmission of digits from input to output must be reduced. The controlled addition of redundancy in ECC contrasts with source coding (data com- pression), in which redundancy is removed from the source signal. Examples of the latter include MP3 and other algorithms for data compression of speech and music. Chapter 4 Coding The functional blocks used for ECC are a coder that precedes the modulator in the transmitter and a decoder that follows the demodulator in the receiver. The decoder can be designed to detect digit errors or to correct them. These functions are known as error detec- tion and error correction, respectively. Exactly the same principles apply to the encoding of information for storage (e.g., on CD, DVD, or magnetic disk) and the subsequent correction of errors on readout. Shannon, in 1948, derived a theoretical "channel capacity" (in bits/sec) based on the bandwidth of a channel and the Signal-to-Noise Ratio (SNR) at the receiver. Shannon showed that data could be transmitted at almost this limiting rate with arbitrarily low prob- ability of error using ECC, provided sufficiently long codewords were used. The challenge is how to design powerful codes