I have tried using a few other books for the same purpose, I find this book being the best in the way how contents are taught and organised. Also, the difficulty of the exercises are tuned slightly towards the intermediate to difficult levels, which is a good challenge for students. The solution (sold separately) is pretty comprehensive which is perfect for self-learning.