Computational methods for partial differential equations