I would definitely recommend this book, especially for the beginner-intermediate level. The concepts are covered well, but a bit more complicated than needed. This book gives you a lot of very useful examples and I found minor bugs in very few of them. Overall the book would be good as both the desktop reference as well as a study guide.