Error-correcting codes play a fundamental role in modern communications and data-storage systems. This volume provides an accessible introduction to the basic elements of algebraic codes and discusses their use in a variety of applications. The author describes a range of important coding techniques, including Reed-Solomon codes, BCH codes, trellis codes, and turbocodes. Throughout the book, mathematical theory is illustrated by reference to many practical examples. The book is written for graduate students of electrical and computer engineering and practicing engineers whose work involves communications or signal processing.