Welcome to Week 3 !
After two weeks with general concurrency and parallel system concepts, it is now time to enter the more practice-oriented phase of this course.
This week offers a condensed overview of typical parallel programming approaches that are available for shared memory systems. Since this is an important topic for all developers today - widely discussed in the Internet and in other sources - it is expectable that you may be already familiar with one or the other idea. You may also agree or disagree about the importance of one or the other approach. The choice of frameworks and approaches presented here is purely subjective, it just reflects our main intention to allow you a wider look on the landscape of parallel programming.
We start with a short repetition of multithreaded programming, which should be well-known for most participants. The repetition gives you a chance to link abstract concepts discussed in week 2 (e.g. mutex, reader / writer lock) to a real programming approach. After that, we present an introduction into task parallelism with OpenMP, which meanwhile turned out to the most important parallel programming approach in shared memory environments.
After the OpenMP introduction, we offer you a coding excercise. The programming tasks define an easy-enough problem that can be solved by parallelization. The results are not part of the grading process. Instead, we propose that you make use of the unique participant crowd available during this week. Ask your questions in the forum, share your ideas. You will never again meet so many people being interested in the same topic ...
The week finishes with some advanced examples for shared memory parallelism, namely Cilk, functional programming, Scala, and PGAS languages.
Have fun, and thanks for staying with us !