comp.lang.ada
 help / color / mirror / Atom feed
From: mbenveni@irisa.irisa.fr (Marc Benveniste,lsp)
Subject: Re: Teaching Concurrency
Date: 9 Jan 90 16:41:57 GMT	[thread overview]
Message-ID: <1904@irisa.irisa.fr> (raw)
In-Reply-To: 7588@hubcap.clemson.edu

From article <7588@hubcap.clemson.edu>, by wtwolfe@hubcap.clemson.edu (Bill Wolfe):
>       The students were each assigned a project for which they 
>       were required to write two Ada programs which involved at
>       least two tasks.  In general, the tasks involved some simple
>       idea that the students were very familiar with, at least in
>       the case of sequential programs.  Thus, the difficulty was
>       in understanding the concurrency and not in the computation
>       performed by the individual task. [...]
>       [...] Students were required to run their programs four times with
>       the same input. [...]  The sudden shock when THEIR program
>       showed this behavior put the point across better than any lecture
>       could. 

 In the same direction, I developed a toy concurrent language adopting
the robot metaphor R. Pattis introduced with "Karel the Robot".
Students have to program simple tasks and assign them to various independent
robots that share a so called world  and communicate by asynchronous
message passing. Dynamical creation of robots is possible with lexical
nesting and recursive task activations. The main advantage, besides the
ones already stated by the previous posting, is DIRECT OBSERVABILITY
of running processes. The main disadvantages are an anthropomorphic view
of processes and an interleaved interpretation of parallelism. 
I wrote a system called LPC (for Concurrent Programming Laboratory in
Spanish) that integrates a compiler for the language, a world editor
and an interactive interpreter. The interpreter allows the student
(or the teacher) to run programs in a stepping mode and to 
select different speeds for each robot (any running robot may be 
stopped). This interactive feature enables the operator to force
certain scenarios to arise. Besides, a formal semantics of LPC's toy 
language was written at the design stage of its development.
A proof system could be derived without to much effort.
I think LPC can be very useful to teach concurrency, particularly
in an introductory course.

References:

Benveniste, M., "LPC: A Concurrent Programming Laboratory",
                in proc. of STACS'88, R. Cori and M. Wirsing Eds.,
                February'88, LNCS #294, pp. 391-392.
                
Benveniste, M., "LPC: un Paradigma de la Programaci'on Concurrente",
                M.Sc. Thesis, IIMAS-UNAM, Technical report #526,
                Orange series, August'88. Mexico D.F., Mexico.
                
Pattis, R.      "Karel the Robot: a Gentle Introduction to the
                Art of Programming",  John Wiley & Sons Inc.,
                New York, 1981.


Marc Benveniste                      mbenveni@irisa.irisa.fr
IRISA
Campus de Beaulieu
35042 Rennes
FRANCE

  reply	other threads:[~1990-01-09 16:41 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1990-01-07  2:26 Teaching Concurrency Bill Wolfe
1990-01-09 16:41 ` Marc Benveniste,lsp [this message]
1990-01-10 20:49 ` Mark Shepherd
1990-01-10 22:47   ` Richard Pattis
1990-01-11 13:04     ` Robert Firth
1990-01-11 19:27       ` Vincent Manis
1990-01-13  7:34         ` Peter G Ludemann
1990-01-12 19:02       ` Peter da Silva
1990-01-15 13:30         ` Robert Firth
1990-01-17 15:40         ` Kurt Luoto
1990-01-11 16:09     ` Michael Meissner
1990-01-14 12:33       ` Re^2: " Kim Shearer
1990-01-11 18:50     ` Tom Griest
1990-01-11 20:38     ` Brian L. Stuart
1990-01-12  0:47     ` Robert Steigerwald x2468
1990-01-15 11:10     ` Stavros Macrakis
1990-01-11 14:52   ` David Lamb
1990-01-13  0:06     ` Mark Shepherd
1990-01-11 16:13   ` S. Crispin Cowan
1990-01-12 13:12     ` Mike Harrison
1990-01-11 19:20   ` Vincent Manis
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox