Back in 1983, my intro CS course used APL. Believe it or not, it was a wonderful introduction, and, thanks to the power and concision of APL's operators and the internal coherence of APL's way of looking at problems, it achieved something quite easily that would be much harder to do with most other languages -- demonstrate that a computer language is, among other things, a way of thinking and a mode of expression, capable of eloquence and wit, where the idionatic combination of words (operators/functions, what have you) can enable one to express a kaleidoscopic array (I suppose I should say "vector") of concepts. It impressed on me strongly the magical beauty of computer programming that is so much a part of its appeal.
Now, granted, APL is probably a terrible introductory language in other respects -- no argument needed here -- but it had the advantage of having a strong point of view, and the experience of inhabiting that Weltanschauung was intoxicating for a young romantic programmer (and every young programmer should be romantic! Isn't changing the world a romantic project?). If I were teaching a intro course (which I'm not qualified to do), I would probably use Python; but Python, fantastic though it is, has less intrinsic character -- the programmer has to bring the character to it --
and would not necessarily be inspiring in quite that way. Another tempting possibility would be to take students on a whirlwind course of comparative computer language linguistics -- show them APL, LISP, and C, write a little in each, and concentrate on attaining fluency in Python. Does that sound like a fun semester?
Back in 1983, my intro CS course used APL. Believe it or not, it was a wonderful introduction, and, thanks to the power and concision of APL's operators and the internal coherence of APL's way of looking at problems, it achieved something quite easily that would be much harder to do with most other languages -- demonstrate that a computer language is, among other things, a way of thinking and a mode of expression, capable of eloquence and wit, where the idionatic combination of words (operators/functions, what have you) can enable one to express a kaleidoscopic array (I suppose I should say "vector") of concepts. It impressed on me strongly the magical beauty of computer programming that is so much a part of its appeal.
Now, granted, APL is probably a terrible introductory language in other respects -- no argument needed here -- but it had the advantage of having a strong point of view, and the experience of inhabiting that Weltanschauung was intoxicating for a young romantic programmer (and every young programmer should be romantic! Isn't changing the world a romantic project?). If I were teaching a intro course (which I'm not qualified to do), I would probably use Python; but Python, fantastic though it is, has less intrinsic character -- the programmer has to bring the character to it -- and would not necessarily be inspiring in quite that way. Another tempting possibility would be to take students on a whirlwind course of comparative computer language linguistics -- show them APL, LISP, and C, write a little in each, and concentrate on attaining fluency in Python. Does that sound like a fun semester?