which transforms the symbols or symbol arrangements into codewords, using one of the many possible coding algorithms reviewed in Chapters 9 and 10, whose purpose is to compress the information into the smallest number of bits. Next is a transmitter, which converts the codewords into physical waveforms or signals. These signals are then propagated through a physical transmission pipe, which can be made of vacuum, air, copper wire, coaxial wire, or optical fiber. At the end of the pipe is a receiver, whose function is to convert the received signals into the original codeword data. Next comes a decoder, which decodes and decompresses the data and restitutes the original symbol sequence to the message's recipient. In an ideal communications channel, there is no loss, nor is there any alteration of the message information thus communicated. But in realistic or nonideal channels, there is always a finite possibility that a part of this information may be lost or altered, for a variety of physical reasons, e.g., signal distortion and additive noise, which will not be analyzed here. The only feature to be considered here is that a fraction of the received codewords or symbols may differ from the ones that were transmitted. In this case, it is said that there exist symbol errors. 11.1 Communication channel Information Originator Recipient Communication Coding channel Decoding Payload message Corrected payload coding decoding Payload + OH Transmitter Receiver Distortion, noise Figure 11.1 Basic layout of error-correction (EC) coding and decoding within a communication channel (OH = overhead). We may just see ECC as another type of coding step or "coding layer," which is to be inserted in the message transmission chain. More specifically, error-correction encoding should be performed after data encoding (prior to transmission) and decoding (error correction) should be performed before data decoding (after reception), as illustrated in Fig. 11.1. As the figure indicates, the coded message to be transmitted is now referred t