Iterative error correction codes have found widespread application in cellular communications, digital video broadcasting and wireless LANs. This self-contained treatment of iterative error correction presents all the key ideas needed to understand, design, implement and analyse these powerful codes. Turbo, low-density parity-check, and repeat-accumulate codes are given equal, detailed coverage, with precise presentations of encoding and decoding procedures. Worked examples are integrated into the text to illuminate each new idea and pseudo-code is included for important algorithms to facilitate the reader's development of the techniques described. For each subject, the treatment begins with the simplest case before generalizing. There is also coverage of advanced topics such as density-evolution and EXIT charts for those readers interested in gaining a deeper understanding of the field. This text is ideal for graduate students in electrical engineering and computer science departments, as well as practitioners in the communications industry.