> Does anyone have experience of using POP-11 as the first language students
> encounter in their degree ?
Pop-11 has been used as the first language for students on AI courses
and also in the experimental psychology degree at Sussex University
since the mid 1970s. It has also been used for many years in the MSc
knowledge based systems course at Sussex, which included many students
with no prior programming experience. (Prolog is taught as the second
language.)
I think it has also been used in Nottingham in the psychology department
for teaching AI to psychology students.
Here in Birmingham we started an AI degree course in October 1993,
(actually a half degree which can be combined with other subjects like
computer science, mathematics, psychology and arts subjects). Pop-11
has been used as the first language for students both in the
undergraduate degree course and also for MSc students on both the
Cognitive Science MSc degree and the MSc conversion course AI stream.
We now also use it for an AI "elective" course available to students
from a range of different subjects, some of whom may not have had any
previous programming.
> If so, how well did it work.
One of my colleagues here who has also taught several other languages
has been helping with marking of Pop-11 mini-projects (end of term 1)
and confirms my impression that most students learn a great deal.
Until recently its main disadvantage was that students could not run it
on their home computers unless they had a powerful unix workstation,
whereas now there is a free version that runs under Linux on PCs (and I
hear there may be a PC Windows version available soon, but without the
graphics).
Having been teaching Pop-11 as a first programming language for about 20
years I have not yet come across any other language I would rather use,
especially as there is now a lot of teaching material that allows
students to learn at their own pace using library programs where
appropriate to provide higher level building blocks. For some of the
teaching material used here in Birmingham see the teach/ subdirectory in
the Birmingham Poplog ftp site:
ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/
(That also includes the revised edition of my Pop-11 primer which is the
most complete and up to date printable description of Pop-11 apart from
the multi-megabyte online documentation that comes with Poplog.)
There's also a lot of teaching material at Sussex, e.g. produced by
Chris Thornton, David Young, Ben du Boulay, Mike Sharples and others.
One of the reasons I like to use Pop-11 for teaching is that there is a
subset including a very useful pattern matcher that is very easy to
learn (e.g. about as easy as Basic) but one can go on teaching students
about more and more sophisticated features as they develop so that they
don't have to keep on switching languages to learn new concepts (e.g.
rule-based programming, object oriented programming, graphical
programming with event-handlers, concurrent systems, compiler design,
etc.)
It has a subset very similar to Scheme so it can be used for quite a lot
of fairly "pure" computer science of the type covered by the book by
Sussman and Abelson, but because it has a wider variety of control
constructs it is easier to extend to other things (e.g. nested loops for
image processing).
As far as I am aware the only strong competitor to Pop-11 is Common
Lisp, which has the advantage that it is used more widely and there are
more books about it. However, I believe that when teaching students
with a wide range of backgrounds including students without much
mathematical sophistication, the more redundant (Pascal-like) syntax is
more approachable, and gives more useful compile time errors.
Some people teach Prolog as a first language, but I think it is a very
poor choice because its control constructs are so counter-intuitive, and
the use of failure and backtracking can cause a great deal of confusion.
Although it is Turing universal like many others there are lots of
simple things that are hard to do with unification and recursion. In a
procedural language it is much easier to show how a variety of different
search strategies can be handled in a uniform fashion simply by using a
nextstates list in a loop, where new options are put at one end of the
the nextstates list for depth first search, at the other end for breadth
first search and various kinds of heuristic search by using a
problem_specific ordering strategy when adding options. Prolog supports
only depth first search directly and requires far more effort to program
other kinds, giving students an artificial impression of lack of
symmetry.
On the other hand I always recommend Prolog as a second language.
I hope that helps.
Aaron
|