Written with a straightforward and student-centred approach, this extensively revised, updated and enlarged edition presents a thorough coverage of the various aspects of parallel processing including parallel processing architectures, programmability issues, data dependency analysis, shared memory programming, thread-based implementation, distributed computing, algorithms, parallel programming languages, debugging, parallelism paradigms, distributed databases as well as distributed operating systems. The book, now in its second edition, not only provides sufficient practical exposure to the programming issues but also enables its readers to make realistic attempts at writing parallel programs using easily available software tools. With all the latest information incorporated and several key pedagogical attributes included, this textbook is an invaluable learning tool for the undergraduate and postgraduate students of computer science and engineering. It also caters to the students pursuing master of computer application. Whats New to the Second Edition A new chapter named Using Parallelism Effectively has been added covering a case study of parallelising a sorting program, and introducing commonly used parallelism models. Sections describing the map-reduce model, top-500.org initiative, Indian efforts in supercomputing, OpenMP system for shared memory programming, etc. have been added. Numerous sections have been updated with current information. Several questions have been incorporated in the chapter-end exercises to guide students from examination and practice points of view.