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