An Introduction To Parallel Programming