Lecture 06 - Design Patterns for Parallel Programming I