This textbook is a reprint of Chapters 1-20 of the original hardback edition. It provides the reader with the tools necessary to implement modern error-processing schemes. The material on algebraic geometry and geometric Goppa codes, which is not part of a standard introductory course on coding theory, has been omitted. The book assumes only a basic knowledge of linear algebra and develops the mathematical theory in parallel with the codes. Central to the text are worked examples which motivate and explain the theory. The book is in four parts. The first introduces the basic ideas of coding theory. The second and third cover the theory of finite fields and give a detailed treatment of BCH and Reed-Solomon codes. These parts are linked by their uses of Eulid's algorithm as a central technique. The fourth part treats classical Goppa codes.