Introduction to Theoretical and Computational Fluid Dynamics