This is a very good book focusing on algorithms for parallel computing. As such it does not focus on any specific parallel programming model (like shared memory or message passing) but almost entirely on algorithms for parallel machines. It is particularly good at explaining run time analysis for various parallel algorithms. To further improve my knowledge of parallel programming, I am attempting to revisit this book and work thorough many of the problems. As such, when I have time I'll planning on writing up my solutions and posting them here. In addition, I have included some notes written by myself in hopes of better understanding some of the individual sections from the book.
Download Notes & Problem Solutions.