[comp.sys.transputer] Responses -- Concurrent Programming Course Suggestions

conrad@wucs1.wustl.edu (H. Conrad Cunningham) (01/08/91)

	About a week ago I posted a question concerning textbooks and
such for a course on concurrent/parallel/distributed programming.
Excerpts of the responses follow.  Other suggestions--especially for
textbooks--are still welcome

- Conrad Cunningham, CIS Dept., Univ. of Mississippi, USA
  cunningham@cs.olemiss.edu

>	I am developing a new course on "concurrent programming"
> targeted at advanced undergraduates and beginning graduate students.
> For this course I want to emphasize concurrency concepts and
> programming techniques rather than survey the available
> architectures and languages.  I would like a significant component
> of this course to be programming exercises ... 
>
> * What books do you suggest as possible texts?
> * What about software to support this class?
>   (for Unix systems, transputers, or IBM PCs)
> * Any comments on the content or approach?

-------------------------------------------------------------------------------
From: pattis@cs.washington.edu (Richard Pattis)

Ben-Ari, "Principles of Concurrent and Distributed Programming", Prentice
Hall - is a nice little book.

----------
From: jparker@East.Sun.COM (Jeff Parker - Sun BOS Software)

	While there are some larger texts (Kuck on the notions of parallelism,
Chandy and Misra's Parallel Program Design) a text that deals simply
with writing parallel programs is:
	Principles of COncurrent Programming, Ben-Ari, Prentice Hall.
It's a little gem.  Programs are written in a simple extension of 
pascal: the book includes the source for a compiler for the language.

----------
From: stachour@SCTC.COM (Paul Stachour -- Secure Computing Technology Corp)

    As a beginning, you should definitely include a "modern programming
language" designed for "real software engineering".  Such a language
of necessity includes concurency.  My preference is for Ada.
Cover both tasking and shared variables in your course.

    You should include those features of non-concurrent languages
that allow you so say something about concurrency, such as the
"volitile" keyword in C.

    You should talk about language features that allow the
compilers to do concurrency, such as IBM's PL/S (cira 1970), ...

----------
From: Michael Wise <michaelw@cs.su.oz.au> (Sydney University, Australia)

I teach a Third Year module called "Operating Systems and
Concurrent Programming"  ... The practical work for the course is done
in a system written in GNU-C from Peter Buhr et al at the University
of Waterloo, called uSystem (that u is in fact a mu).  What they have
done is take ANSI C and add a number of CP primitives that support
various paradigms:  coroutines and processes with either semaphores,
monitors or message passing. The system is robust, but there is little
in the way of useful diagnostics  (though some of this has been
improved in the latest release) or debugging aids (this is still a
research area, after all). Other than that, my experience with uSystem
has been very positive.  uSystem has been ported to a number of
uniprocessors (we use MIPS boxes and Sun 3) and to the Sequent. 
For more information on uSystem you should contact:
Peter Buhr: pabuhr%watmsg.uwaterloo.ca

Textbooks are a problem. The 1982 edition of Ben Ari's book
is OK (the more recent edition is more mathematical).

----------
From: scott@cannon.cs.usu.edu (Scott Cannon, Utah State University)

The course mentioned ...  is very similar to one just implemented here
at Utah State Univ.  Our one-quarter course has as its prereq. an
undergraduate OS and C course and is targeted at seniors and beginning
grad. students.  Our lab consists of a half-dozen 286's hosting Alta
Tech. transputer boards with 6 nodes each.  ...
The text used is "Principles of concurrent and Distributed Programming" by
Ben-Ari (Prentice Hall Int.).  The text covers all the significant
paradigms and basic concurrency concepts with examples in a pseudo
language similar to C.  Syllabus for our course includes:          

	1. concurrent I/O and interrupt processing
	2. concurrent programming abstractions
	3. intro. to LSC and transputers
	4. mutual exclusion; problems and principles
	5. semaphores and monitors
	6. synchronization
	7. Linda-style message posting
	8. performance monitoring and load balancing

----------
From: sztipaj@vuse.vanderbilt.edu (Janos Sztipanovits, Dept. of EE)

... I have a course on real-time system design, where one of the main
topics is concurrent programming. Last semester I used the book:

	Tom Axford: Concurrent Programming (Wiley)

...quite happy with it. ... primary language used was Modula-2 ...
... concepts, architectures, and so forth. ... used transputers as 
an inexpensive platform for parallel computing. We used C for
the transputer programming. 

----------
From: Stephen Seidman <seidman@eng.auburn.edu>

Here at Auburn, Carolyn McCreary has been teaching such a
course, and she has written a paper describing the materials and
software she used.  You can contact her at mccreary@eng.auburn.edu. 

---------
From: MAKER_P@DARWIN.NTU.EDU.AU
	I'm starting a similar course down here in Australia and will be
putting together a variety of tools etc for it. Our textbook is by
M. Ben-ari and called ``Principles of Concurrent and Distributed
Programming'', ISBN 0-13-711821-X.  This is the second edition of his 
earlier book and cover more material, e.g. distributed systems, 
time analysis for real-time systems, ... 
It may however be too introductory for the someone after a good O/S
course (of course in O/S I tend to teach concurrent programming so ...)

	Tools that exist for them to execute their exercises include:

	public domain occam 1 running on unix  (free)
	the light weight process package running under sunos
		(proprietary)
	AT&T C++ task package (ridiculous if you have to buy C++)
	Awesime simulation,... package  (free)
	Icon (free but only provides generators and programmer 
	controlled co-expressions; still its interesting to get them
	away from the subroutine model of reality)

----------
From: George Springer <springer@iuvax.cs.indiana.edu>

You might look at "Coordinated Computing -- tools and techniques for
distributed software" by Filman and Friedman, McGraw-Hill, 1984.  It
contains a number of good exercises and a discussion of basics.

----------
From: David T. Lindsley <dlindsle@blackbird.afit.af.mil>

Tauqire Hussain Shah of the University of Dayton developed a concurrent
Pascal compiler a while back -- written in non-concurrent Pascal. 
....
The concurrent-Pascal compiler was developed for the OS(1) course when
it was still taught using the VAX.

Contact:  shah@udavxb.oca.udayton.edu   shah@udcps3.cps.udayton.edu

----------

Dyke Stiles from Utah State Univ. sent a copy of a Parallel
Bibliography.  To hold down the size of this posting I decided not to
include it here.

STILES@USU.Bitnet 
STILES@cc.USU.edu 

--------------------

Thanks to everyone who responded.

- Conrad Cunningham, CIS Dept., Univ. of Mississippi, USA
  cunningham@cs.olemiss.edu