Stochastic Calculus for Finance II: Continuous-Time Models by Steven Shreve

This textbook covers both theory and hands-on exercises in equal measure.