Patterns for Parallel Programming by