I'm quite happy using lists in general but I have never quite figured out property lists. Can someone please explain what these are, how they differ from
ordinary lists and why I might want to use them?

Property lists are
like linear lists except that you point to locations in the list not by number,
but by a property name. For instance, let's say that you have a list of patients,
students, customers, etc., and for each you are keeping track of certain items
of information, such as name, street address, phone number, city, state, and
zip (postal code for those of you outside the USA). You could set up a linear
list, such that:

person[1] is where
you store the name
person[2] is where you store the street.
etc.

But with property lists,
you can use the name, coupled with a pound sign, to indicate the location:

person[#name]
person[#street]
etc.

The combination of
the pound sign with the property name is called a symbol and takes up very
little room in memory, unlike a variable, since a symbol only indicates a
location in the list. This is true in Director and I assume the same is true
in Authorware.

You can mix linear
list and property lists. For instance, you can have a list of property lists:

persons[id number][#name]
persons[id number][#street]
etc.

There are several functions
that deal with lists and property lists. They're all good. One that is often
obscured is the function called Symbol. It will convert any string into symbols.
This is not for novices! It's used when you want to set, reset, add to, or
look for values in a property and you want don't know ahead of time the name
of the property.

For instance, let's
say you are in charge of a zoo, and you set up each animal in the zoo to have
a location in our zoo property list. The value of each one will be how many
of that animal your zoo possesses. You start with only three animals:

zoo[#elephant] := 2
zoo[#tiger] := 4
zoo[#slug] := 123

The above sets up our
zoo with 2 elephants, 4 tigers, and 123 slugs.

Now let's say you want
the user to add a new animal. You have no idea what the user will type. You
set up a text entry interaction, then you use the Symbol and the AddProperty
functions. The user's animal will be contained in the Authorare system variable
EntryText, so it's a relatively simple matter: