Parallel Programming Approaches