Please note that the content of this book primarily consists of articles available from Wikipedia or other free sources online. In coding theory, concatenated codes form a class of error-correcting codes that are derived by combining an inner code and an outer code. They were conceived in 1966 by Dave Forney as a solution for the problem of finding a code that has both exponentially decreasing error probability with increasing block length and polynomial-time decoding complexity. Let C be a code with length N and rate R over an alphabet A with K=N*R symbols. Let I be another code with length n and rate r over an alphabet B with k=n*r symbols. The inner code I takes one of k possible inputs, encodes onto an n-tuple from B, transmits, and decodes into one of k possible outputs. We regard this as a (super) channel which can transmit one symbol from the alphabet A, also of size k. We use this channel N times to transmit each of the N symbols in a codeword of C. The concatenation of C (as outer code) with I (as inner code) is thus a code of length Nn over the alphabet B.