This book provides a theoretical background in computation to scientists who use computational methods. It explains how computing is used in the natural sciences, and provides a high-level overview of those aspects of computer science and software engineering that are most relevant for computational science. The focus is on concepts, results, and applications, rather than on proofs and derivations. The unique feature of this book is that it "connects the dots between computational science, the theory of computation and information, and software engineering. The book should help scientists to better understand how they use computers in their work, and to better understand how computers work. It is meant to compensate a bit for the general lack of any formal training in computer science and information theory. Readers will learn something they can use throughout their careers.