This textbook provides a rigorous mathematical perspective on error-correcting codes, starting with the basics and progressing through to the state-of-the-art. Algebraic, combinatorial, and geometric approaches to coding theory are adopted with the aim of highlighting how coding can have an important real-world impact. Because it carefully balances both theory and applications, this book will be an indispensable resource for readers seeking a timely...