The best book is The Mathematica Book itself. The best advice is Steven
Wolframs's "Suggestions about Learning Mathematica" in the front of the
Actually working through and typing in the statements from most of Part I of
The Book is the best way to familiarize yourself with the basics of
Mathematica and save a lot of time in the long run.
Other good books are:
1) The Beginner's Guide to Mathematica: Version 4 by Jerry Glynn & Theodore
2) Programming in Mathematica: Third Edition by Roman Maeder. This is more
advanced and discusses the writing of packages. (Also lookup packages on
In my own mind there is not a lot of difference between programming in
Mathematica and just using Mathematica. You will often find that you will
have to write short routines to provide various needed functions.
Mathematica could not possibly directly provide every useful routine that
people might want.
If you really get stuck, make a posting to MathGroup and provide a simple
example if you can. That will also save a lot of time.
After you have learned the basics, it is good practice to work with a simple
non-Mathematica technical book. How easily can you translate the problems
into Mathematica statements?
The book treats Mathematica from three approaches: Mathematica as a
calculator, Mathematica as a programming language (functional,
rule-based, etc), and Mathematica as a knowledge representation. This
book helped me use Mathematica with a deeper understanding of the
underlying principles. I highly recommand it.
In addition to Gray's book, Roman Maeder's Programming in Mathematica
is also excellent. This book has many good examples which are included
in the Mathematica package.
Hope this helps.