Difference equations are models of the world around us. From clocks to computers to chromosomes, processing discrete objects in discrete steps is a common theme. Difference equations arise naturally from such discrete descriptions and allow us to pose and answer such questions as: How much? How many? How long? Difference equations are a necessary part of the mathematical repertoire of all modern scientists and engineers.In this new text, designed for sophomores studying mathematics and computer science, the authors cover the basics of difference equations and some of their applications in computing and in population biology. Each chapter leads to techniques that can be applied by hand to small examples or programmed for larger problems. Along the way, the reader will use linear algebra and graph theory, develop formal power series, solve combinatorial problems, visit Perron-Frobenius theory, discuss pseudorandom number generation and integer factorization, and apply the Fast Fourier Transform to multiply polynomials quickly. The book contains many worked examples and over 250 exercises. While these exercises are accessible to students and have been class-tested, they also suggest further problems and possible research topics.