Exercises in Practical Concurrent and Parallel Programming