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 strewn throughout the text demonstrate how the language 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 275 exercises are provided to challenge the reader's understanding of the material covered and these provide ample opportunity to practise using the language. Mathematica notebooks containing examples, programs and solutions to exercises are available from www.cambridge.org/9781107009462.