This book is a description of why and how to do Scientific Computing for fundamental models of fluid flow. It contains introduction, motivation, analysis, and algorithms and is closely tied to freely available MATLAB codes that implement the methods described. The focus is on finite element approximation methods and fast iterative solution methods for the consequent linearized systems arising in important problems that model incompressible fluid flow. The problems addressed are the Poisson equation, Convection-Diffusion problem, Stokes problem and Navier-Stokes problem, including new material on time-dependent problems and models of multi-physics. The corresponding iterative algebra based on preconditioned Krylov subspace and multigrid techniques is for symmetric and positive definite, nonsymmetric positive definite, symmetric indefinite and nonsymmetric indefinite matrix systems respectively. For each problem and associated solvers there is a description of how to compute together with theoretical analysis that guides the choice of approaches and describes what happens in practice in the many illustrative numerical results throughout the book computed with the freely downloadable IFISS software. All of the numerical results should be reproducible by readers who have access to MATLAB and there is considerable scope for experimentation in the "computational laboratory " provided by the software. Developments in the field since the first edition was published have been represented in three new chapters covering optimization with PDE constraints Chapter 5; solution of unsteady Navier-Stokes equations Chapter 10; solution of models of buoyancy-driven flow Chapter 11. Each chapter has many theoretical problems and practical computer exercises that involve the use of the IFISS software. This book is suitable as an introduction to iterative linear solvers or more generally as a model of Scientific Computing at an advanced undergraduate or beginning graduate level.