A complete guide for both beginners and advanced learners. Sprinkled with many exercises and examples.