High Performance Computing and the Art of Parallel Programming:An Introduction for Geographers, Social Scientists and Engineers