[comp.lang.icon] Use of Icon in Support of Coursework??

hcc@cs.olemiss.edu (Conrad Cunningham) (03/13/91)

A question for academics who use Icon in support of undergraduate- or
graduate-level courses:  In what kinds of courses, at what levels, and
in what ways is Icon used in support of teaching--particularly in
computing science?  What are the advantages/disadvantages to use of
Icon in comparison to other languages?  What are the available
textbooks?

Motivation for question:  most of the coursework in my department uses
Pascal, C, or Ada for laboratory exercises.  Since joining this
department two years ago I have been looking for appropriate ways to
broaden our students "exposure" to different styles, paradigms, and
approaches to programming.  For example, I've developed or am
developing elective courses in program derivation, functional
programming (lazy), and concurrent programming.  I was just wondering
what place Icon has in existing or potentially new courses.

Thanks,
-------------------------------------------------------------------------------
H. Conrad Cunningham  | Dept. of Computer & Info. Sci., Univ. of Mississippi
Tel:  (601) 232-5358  | 302 Weir Hall, University, MS 38677  U.S.A.
Fax:  (601) 232-7010  | Email:  cunningham@cs.olemiss.edu 
-------------------------------------------------------------------------------

goer@quads.uchicago.edu (Richard L. Goerwitz) (03/14/91)

Hcc@cs.olemiss.edu (Conrad Cunningham) writes:
>A question for academics who use Icon in support of undergraduate- or
>graduate-level courses:  In what kinds of courses, at what levels, and
>in what ways is Icon used in support of teaching--particularly in
>computing science?  What are the advantages/disadvantages to use of
>Icon in comparison to other languages?  What are the available
>textbooks?
>
>Motivation for question:  most of the coursework in my department uses
>Pascal, C, or Ada for laboratory exercises.  Since joining this
>department two years ago I have been looking for appropriate ways to
>broaden our students "exposure" to different styles, paradigms, and
>approaches to programming.

The problem with Icon - and it's only a problem under certain cir-
comstances - is that people who've learned an Algol-family language
before learning Icon have a very hard time thinking of Icon in its
own terms.  They'll tend to pick up things like string scanning and
goal-directed evaluation very late in the game - when in fact they
are some of Icon's major advantages, and ought to be picked up right
away.

Icon is a totally different paradigm in a familiar guise.  This
can be very useful, but also very deceptive.

I'd think Icon would be a nice steppingstone to a lecture or two
on Prolog, which has similar backtracking mechanisms (not to say
that the languages in other respects are much the same).  Icon's
string scanning would also serve as a good introduction to the
grand old Snobol tradition - which students at this stage would
probably not want to invest a lot of time in (but which they
ought to know exists).

For people doing nonnumeric computing, I'd think it would be
an ideal first language.  For those in more traditional com-
puting courses (I'm just guessing here, since I've never taken
a programming course), I'd think it would be an instructive
paradigm shift which might, if done with care, provide a nice
bridge between Algol-family languages and the rest of the
programming languages that are out there.

Actually, I wonder (now that I'm thinking about it) why any-
one would bother with Pascal.  Pascal is annoying in that
the core language definition was originally so sparse that
everyone extended it in all kinds of ways just to get it
to work.

-Richard