Introduction to Concurrency in Programming Languages

Matthew J. Sottile, Timothy G. Mattson, Craig E Rasmussen

September 28, 2009 by Chapman and Hall/CRC
Textbook - 344 Pages - 32 B/W Illustrations
ISBN 9781420072136 - CAT# C7213
Series: Chapman & Hall/CRC Computational Science


Add to Wish List
FREE Standard Shipping!


  • Provides a solid understanding of many important concepts in concurrent/parallel computing and parallel languages
  • Describes the historical development of current programming languages and the common threads that exist among them
  • Contains several chapters on design patterns for parallel programming
  • Includes end-of-chapter exercises and algorithm case studies, along with quick reference guides to OpenMP, Erlang, and Cilk
  • Offers lecture notes, source code examples, and links to language compilers on the book’s website


Exploring how concurrent programming can be assisted by language-level techniques, Introduction to Concurrency in Programming Languages presents high-level language techniques for dealing with concurrency in a general context. It provides an understanding of programming languages that offer concurrency features as part of the language definition.

The book supplies a conceptual framework for different aspects of parallel algorithm design and implementation. It first addresses the limitations of traditional programming techniques and models when dealing with concurrency. The book then explores the current state of the art in concurrent programming and describes high-level language constructs for concurrency. It also discusses the historical evolution of hardware, corresponding high-level techniques that were developed, and the connection to modern systems, such as multicore and manycore processors. The remainder of the text focuses on common high-level programming techniques and their application to a range of algorithms. The authors offer case studies on genetic algorithms, fractal generation, cellular automata, game logic for solving Sudoku puzzles, pipelined algorithms, and more.

Illustrating the effect of concurrency on programs written in familiar languages, this text focuses on novel language abstractions that truly bring concurrency into the language and aid analysis and compilation tools in generating efficient, correct programs. It also explains the complexity involved in taking advantage of concurrency with regard to program correctness and performance.