Symbolic dynamics is a rapidly growing area of dynamical systems. Although it originated as a method to study general dynamical systems, it has found significant uses in coding for data storage and transmission as well as in linear algebra. This book is the first general textbook on symbolic dynamics and its applications to coding. Mathematical prerequisites are relatively modest (mainly linear algebra at the undergraduate level) especially for the first half of the book. Topics are carefully developed and motivated with many examples, and there are over 500 exercises to test the reader's understanding. The last chapter contains a survey of more advanced topics, and a comprehensive bibliography is included. This book will serve as an introduction to symbolic dynamics for advanced undergraduate students in mathematics, engineering, and computer science.