d-acting error correction (FEC) uses certain binary codes that are designed to be self-correcting for errors introduced by the intervening transmission media. In this form of error correction the receiving station has the ability to reconstitute messages containing errors. The codes used in FEC can be divided into two broad classes: (1) block codes and (2) convolutional codes. In block codes information bits are taken k at a time, and C parity bits are added, checking combinations of the k information bits. A block consists of n = k + C digits. When used for the transmission of data, block codes may be systematic. A systematic code is one in which the information bits occupy the first k positions in a block and are followed by the (n - k) check digits. A convolution(al) code is another form of coding used for error correction. As the word "convolution" implies, this is one code wrapped around or convoluted on another. It is the convolution of an input-data stream and the response function of an encoder. The encoder is usually made up of shift registers. Modulo-2 adders3 are used to form check 3 Note that modulo-2 addition is the same as binary addition but without the "carry," or 1 + 1 = 0 and we do not carry the 1. Summing 10011 and 11001 in modulo-2, we get 01010. 10.5 ERRORS IN DATA TRANSMISSION digits, each of which is a binary function of a particular subset of the information digits in the shift register. 10.5.3.3 Error Correction with a Feedback Channel. Two-way or feedback error correction is used widely today on data circuits. Such a form of error correction is called ARQ. The letter sequence ARQ derives from the old Morse and telegraph signal, "auto- matic repeat request." There are three varieties of ARQ: 1. Stop-and-wait ARQ 2. Selective or continuous ARQ 3. Go-back-n ARQ Stop-and-wait ARQ is simple to implement and may be the most economic in the short run. It works on a frame-by-frame basis. A frame is generated; it goes through CRC processing and an FCS is appended. It is transmitted to the distant