Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Topics in parallel and distributed computing : introducing concurrency in undergraduate courses
Prasad S., Gupta A., Rosenberg A., Sussman A., Weems C., Morgan Kaufmann Publishers Inc., San Francisco, CA, 2015. 360 pp. Type: Book (978-0-128038-99-4)
Date Reviewed: Jan 27 2016

Providing practical assistance for adding parallel programming at an early stage to undergraduate students in computer science is the aim of this book. Although presented as a book, it is really a collection of separate articles by different authors, who take different approaches. For example, there are some chapters that use Java as the programming language and others that use Python. As such, it would be better used as a reference book that can be dipped into for ideas than as an overall guide on which the development of a particular course could be based.

The book is divided into two sections, one “For Instructors” and the other “For Students.” The section “For Instructors” contains some comments giving suggestions on how the material could be used, while the section “For Students” is worded as if it were actual notes to be read by students. However, I felt that the material in the “For Students” section was really more for instructors to take and adapt than something that could be given directly to students.

When teaching introductory programming, it is always a challenge to come up with simple illustrations in code that cover the basic principles and can be used to help one build a mental model to gain the deep understanding needed to progress to more advanced programming. That is even more so with parallel programming. The book provides plenty of such illustrations, and they are well presented.

For me, a disappointing aspect of the book is the extent to which it is very much focused on the traditional approach to parallelism, that is, concurrent threads interacting through shared memory, and all the issues of synchronization that brings. If parallelism is seen only in this way, there has been little change for many years; most of what is in the book was familiar to me from when I was taught it myself as an undergraduate several decades ago. I would have liked to see at least some recognition of the growth of interest in and practical use of modern functional languages that has been pushed by a recognition that programming in this way fits naturally into a parallel viewpoint and overcomes the problems of shared mutable memory. To some extent, this reflects what has always been an issue in teaching programming: do you start by introducing it in concrete terms building up from its hardware basis and becoming more abstract as you develop understanding, or do you do it the other way around?

The book does contain a recognition of the argument others have used to move to a more abstract model of programming: Moore’s law is no more; to carry on making computers faster, we now have to use parallel hardware, and on that basis parallel programming should be introduced early in the curriculum rather than as an advanced subject later. I wish this had been taken further, with at least one extra chapter to give students a wider feel for how parallel programming is used in practice.

Looking through the examples in the book, while I am sure that stronger students who have grasped the basics of programming could work with them, weaker students who are still coming to grips with the most basic aspects may find the additional complexity of parallel processing too much to grasp. However, for those who think their students are strong enough to work with it, I agree very much with the basic approach taken, which is to introduce the concepts through actual code that the students can experiment with. Doing it that way is hard work for instructors, which is why we are often tempted to go down the route of teaching the concepts in theory. Students too often want the shortcut approach of memorizing theory without having to write real code. In my experience though, for any topic in programming, the only real way to learn it is through plenty of practice; then, the theory that seemed abstruse at first starts to make sense. So if this book fits your needs, I recommend taking the examples from it and adapting them for real use in the programming lab.

Reviewer:  M. Huntbach Review #: CR144135 (1605-0274)
Bookmark and Share
 
Concurrent Programming (D.1.3 )
 
 
Concurrent, Distributed, And Parallel Languages (D.3.2 ... )
 
 
Parallelism And Concurrency (F.1.2 ... )
 
 
Language Classifications (D.3.2 )
 
Would you recommend this review?
yes
no
Other reviews under "Concurrent Programming": Date

Type: Journal
Jul 1 1985
Resources in parallel and concurrent systems
, ACM Press, New York, NY, 1991. Type: Book (9780897914000)
Jun 1 1992
Concurrent programming
Andrews G., Benjamin-Cummings Publ. Co., Inc., Redwood City, CA, 1991. Type: Book (9780805300864)
Jun 1 1994
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy