Foundations of Computational Mathematics: Adaptive finite element methods for flow problems