Computational Techniques for Fluid Dynamics 1: Fundamental and General Techniques