Starting from first principles, this book covers all of the foundational material needed to develop a clear understanding of the Mathematica language, with a practical emphasis on solving problems. Concrete examples throughout the text demonstrate how Mathematica can be used to solve problems in science, engineering, economics/finance, computational linguistics, geoscience, bioinformatics, and a range of other fields. The book will appeal to students, researchers and programmers wishing to further their understanding of Mathematica. Designed to suit users of any ability, it assumes no formal knowledge of programming so it is ideal for self-study. Over 290 exercises are provided to challenge the reader's understanding of the material covered and these provide ample opportunity to practice using the language. Mathematica notebooks containing examples, programs and solutions to exercises are available from www.cambridge.org/wellin.