Don W,

This discussion has morphed overnight into a much broader debate.

First some general comments:

I have been interested in your objective of using J at the school level for
a long time, and made various forays with small groups of children.  Some
have found it quite exciting.  However my professional teaching experience
using the language has been limited to some hundreds of students doing 
university level statistics courses.  Like you my interest in APL languages 
stems from the sixties.

It seems to me that your concept of what is in school mathematics dates
from 30 or more years ago than what is in the texts today.  The language for
the school mathematics curriculum must be able to produce a wide range of
graphics, be suitable for many operations with sets, be a good tool for
exploring a range of statistical ideas as well as providing a tool for
covering some of the traditional topics which you have discussed. Most texts
include a good deal of material you have labelled as computer science, but I
would classify as appropriately specifying an important mathematical
algorithm.  J is in fact an excellent fit for this.

I think you will also find that the concept of a function has a very
important role in this material and that can be enriched greatly using J and
its very simple tools for defining new functions and exploring their
behaviour.  I therefore think your avoidance of using simple defined
functions in expressions is misplaced.  In my experience students wanted
them - and used them.  Mathematics teachers will not really get up to speed
unless they take them aboard in the rich way Ken intended with his language
tools.  You might like to look at a paper by Walter Spunde (a keen J user) 
who was concerned
with teaching teachers.  http://www.icme-organisers.dk/tsg14/TSG14-15.pdf

Polynomials form  an important traditional topic in elementary school
mathematics.  To treat them sensibly in J you really must use the primitives
and teach students the relationship between the traditional notation and the
elegant and simple tools in J.  To re-express everything in a manner which
mirrors the traditional tools just does not make sense.

The students now are all computer users.  They have experience of the need
to follow the rules for a particular program or game or whatever.  The
biggest problem is not with the students but with the teachers that you are
trying to reach.  After you have done so, there is the further problem Bill
mentioned, of getting the material into the curriculum.

For some reasons which I do not understand the Computer Science departments 
seem to have been inoculated against the use of J even though it is an 
exceptional functional language.

You seem to be very concerned about the symbols.  The programmers of the 
world, many of them exceptional mathematicians use words.  Mathematica has 
thousands of functions which all have distinct word names.  Having a whole 
set of new primitivie characters is not necessary for commercial success 
with mathematicians. We should not be frightened to use words instead of the 
symbols for the primitives.  In my experience school students can start 
readily with the primitive names and drop them at any time they are 
sufficiently familiar with the graphic representation which is the standard 
in this forum.

You wrote:
>> Another set of documentation is needed. I do have qualifications and
>> experience in both Mathematics and Computer Science, but I have a
>> struggle with the notes behind the vocabulary. That won't attract
>> a 5th grade school teacher.

Ric Sherlock responded:
>
> In my view this is the place where there is the most bang for buck to be 
> had.
> As I understand it the Dictionary/Vocabulary serve firstly as a 
> specification for the J language rather than as a document for introducing 
> newcomers to the language. As such there are good reasons for keeping it 
> concise and precise. However I totally agree with you that it won't 
> attract school teachers! I also totally agree that it would be great to 
> have a separate document that was be more appropriate for that purpose.
>
> I think it would also be nice (continuing with the house selling metaphor) 
> to give all the documentation a new coat of paint in a more up-to-date 
> colour. In my opinion it currently looks dated, both in terms of visual 
> appearance and underlying structure.

This task is not easy, and I think it is central to having simpler material. 
The Dictionary of J is a name which I think followed from Ken's Dictionary 
of APL, but it is not like any ordinary dictionary I know.  It is not clear 
what principle is used for alphabetising the entries, and they do not follow 
the sort of rules which lexicographers use.

Further the current dictionary assumes the reader knows the J primitives. 
That is not the case with beginners.  We need a different sort of dictionary 
for beginners to use.

You wrote in response to Bill:
>    Your second question, Bill, is the $64,000 question. I am only thinking
> presently of the issue of persuading the J community that there is
> something
> worth doing.
>

There clearly is something worth doing, but do not expect to persuade the 
whole J community.  All that is needed is a small group who actually do the 
things they think are needed.

Second, Forks and Trains:

I found there was a real difference between learning styles of students, and
some will find an imperative style which you seem to be promoting
attractive, while others will favour the understanding and structure you can
attain with tacit form.  To force all to use the same style may not be the
best approach and I would urge you to find some ways of introducing both.

If you limit yourself to verbs and adverbs the structure of forks is very
simple, and I would suggest that you try and use them in that form.  You do
not seem to have used [:  mentioned by Raul in any of the material so far
but it provides a neat tool for including and using monadic verbs.  Using
trains in this form simplifies explaining what they do.  Each verb in an
'even' position from the right has the expression to its right as its right
argument, and the verb on its left reaches out to the argument(s) of the
train. It is simple to include monadic and dyadic functions where required.
In the following functions there are no conjunctions and parentheses are
only used to indicate trains which must be executed as a group to provide a
verb argument.

You are concerned about the inclusion of nouns in trains.  A noun can
replace the left argument of any verb in an even position in the train.
Simple use of [ and ] and parentheses enables arbitrary functions of the
noun to be used in a train.  Use of the reflex adverb can solve the problem
of it being a right argument of the function being used.

The following script takes some examples from your original paper.  I 
believe it shows that you can solve some of the problems you attempt to 
address with your notation in a simple way.  By being careful about how 
explicit expressions are written they can often be converted to tacit 
directly.  Teachers actually find this somewhat amazing - and Walter was 
focusing on something which might prove the best selling point for them 
(well at least those who have enough mathematics to really appreciate the 
power of the idea.)

Fraser
=======================================
load 'primitives'
NB.  From your original paper
c =: 15 19 23 22 21 24 19
(+/c)% (#c)
NB.  Express it just using the functions
(+/%#) c
NB.  And give it a name
mean =: +/%#
NB.  To round it
<. 0.5 + mean c
NB.  The leftmost function has no left argument
(cap <. 0.5 + mean) c

meanr =: cap <. 0.5+mean
meanr c
NB.  of course you could define round
rnd =: [: <. 0.5 + ]


NB.  SD example
NB.  I would rewrite
mdev =: ]-mean
ssq =: [: +/ [: *: mdev
sd =: [: %: ssq % #

NB.  But for beginners would prefer using the primitive
NB.  names because it helps focus on the meaning. At an
NB.  early stage we need to note the 'default' that a
NB.  a function has two arguments, and having a tool for
NB.  specifying a monadic use - it is [:  (cap)

mdev =: right - mean
sum =: +/
ssq =: cap sum cap square mdev
sd  =: cap sqrt ssq % tally

NB.  Or using the preferred unbiased estimator
sd  =: cap sqrt ssq %  _1 + tally

NB.  We make use of [ and ] to avoid conjunctions
up =: [*10^]
down =: [%10^]
NB.  And sometimes we need parentheses
round =: ([: rnd up) down ]

rnd mean c
NB.  effectively using new functions of value in many contexts
NB.  Surely we want to introduce students to functions which
NB.  are reusable.

NB.  For your fibonacci example I would introduce the
NB.  power conjunction to students and enter fib to
NB.  show its structure (Use box representation
NB.  because it shows the train structure so clearly.)

fibstep =:    ], [: sum _2 {. ]

fib =: [ fibstep ^: [ ]
fib
6 fib 0 1








----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to