Ray-tracing is a classic example of an embarrassingly parallel algorithm; since each pixel is typically independent of the rest, theoretically every pixel can be done in parallel (given enough core
The N-Body problem is a classic example used frequently to demonstrate parallelization and how it improves performance.
I've got a great wife. For my birthday she got me a copy of the newly updated Introduction to Algorithms, 3rd ed. by Cormen, Leiserson, Rivest, and Stein.
(This work was done by Vivek Lingegowda during his internship at Intel.)
There is a long discussion talking about the advantages of Procedural Programming vs. the advantages of Object Oriented Programming.
Tim Mattson (Intel) has authored an extensive series of excellent videos as in introduction to OpenMP*.