Richard wrote:
> Anyway, building on top of PRESS, in my opinion, is unappealing
> mathematically. Incorporating PRESS into a computer algebra system
> somehow, as some kind of "meta level" is also unappealing, at least to me.
I think it would be helpful if I explained what I am interested in
using PRESS for. In May of 2008 you submitted your Sage-related
“standing on the toes of giants” post to the Maxima list. In the
conclusion of this post you made the following statement:
“I think that people with the skill set for advancing computer algebra
systems and scientific computing generally are unusual, and that
(after an educational process that may involve courses, reading,
programming), such people should be encouraged to advance the state of
the art, not duplicate it.”
This thought made great sense to me. I was inspired by it to try to
figure out a way to provide these unusual people with the education
they would need to achieve your goal of advancing the state of the art
in computer algebra systems. I decided that one way to educate these
people was to get an mid-level Lisp-based CAS into their hands, teach
them how it worked at a deep level and, when they had outgrown it,
move them up to a state of the art CAS like Maxima or Reduce.
MathPiper is a mid-level Lisp-based CAS, and this is one of the main
goals I set for MathPiper in 2008.
I observed that your attempts to convince the current generation of
CAS developers to learn Lisp (so they could actually stand on the
shoulders of CAS giants) were mostly unsuccessful. I figured if you
had difficulty convincing developers (who already had favorite
programming languages) to learn Lisp, a nobody like me would have no
chance at all. From this I concluded that I needed a way to reach
future CAS developers before they knew how to program. This meant I
needed to figure out a way to reach these unusual people while they
were still in high school or even middle school.
At the university where I work, I teach an introduction to programming
class to incoming freshmen (and sometimes to high school juniors and
seniors) each fall semester. In the fall of 2008 I started teaching
MathPiper in this class, and every year since then I have modified
MathPiper (sometimes heavily) so it increasingly met the beginning
programming and CAS needs of high school students and college
freshmen. MathPiper has reached the point where it works fairly well
as a first programming language.
I plan to use what I think of as a “Trojan pinata” strategy for
transitioning the unusual students you mentioned from MathPiper to a
more advanced CAS. I removed most of the deeper computer algebra code
from MathPiper and then modified it to wrap around and use a more
advanced CAS for more advanced tasks. In the list of student feedback
I posted earlier there were indeed a number of students who thought
the software I showed them was “cool”. However, there was one student
who asked “How is this working?”. I think this might indicate this
student is one of the unusual students we are looking for. When a
student asks how the deeper parts of MathPiper are working, they can
be guided through cracking MathPiper open so they can begin learning
about the more advanced CAS treasure/payload it contains. It does not
matter if these students never use MathPiper again because it is
specifically designed to be a training wheels CAS which is discarded
when it is no longer needed.
MathPiper currently uses Reduce as its payload CAS, but it would be
nice for the payload CAS to be Maxima. As an aside, I needed to do
some substantial modifications to Reduce to have it work as a
computation engine for another CAS. Arthur Norman was kind enough to
provide me with a summary explanation of the Reduce codebase before I
started the modification effort, which was very helpful.
Now that I have provided some information about one of the main goals
I am trying to achieve with MathPiper, I can more easily explain what
I am planning to use PRESS for. A few years ago a mathematics
assessment researcher (whose assessment software used Maxima) told me
something along the lines that most postsecondary teachers could not
use MathPiper in their classrooms because it did not show the
psychologically plausible steps it took to solve a given equation.
This fact was a major obstacle for the goal I had for MathPiper.
Fortunately, he also told me about the existence of a psychologically
plausible entry-level CAS named PRESS, and he suggested that I look
into it.
After studying PRESS for awhile, I decided it could be used as part of
a second Trojan pinata strategy which would make it easier to
introduce MathPiper into postsecondary schools. In this instance of
the strategy, the entry-level PRESS CAS is the pinata and MathPiper is
the payload. Just as it is essential for MathPiper to be limited to
encourage unusual students to break it open and discard it, it is
essential for PRESS to be limited to encourage students to break it
open and discard it. However, instead of using PRESS itself and
wrapping it around MathPiper, I am in the process of just implementing
in MathPiper the parts of PRESS that are useful for the purpose they
need to serve. I am also modifying and extending these parts to be
more useful in an educational setting.
The more I work with PRESS, the more it appears to be well suited for
this purpose. There are over 12 papers that have been written on PRESS
and at least three books which contain discussions of it. This
literature, along with literature that is related to it, contains a
wealth of information on this entry-level CAS which is essential to
know for students who will eventually be advancing the state of the
art in computer algebra systems. The following are some of the ideas
that are discussed in this literature:
Algorithm = logic + control.
Computation = controlled deduction.
Formal languages.
Formal logic.
Mathematical logic.
Object language.
Meta-language.
Lambda abstraction.
Decision procedures.
Guided search.
Pattern matching
Rewrite rules.
etc.
I hope to be able to incorporate information like this into the
educational materials I will be writing for the
“PRESS/MathPiper/Advanced CAS” system which can be understood by
7th-12h graders.
In your “toes” post you mentioned an educational process which will
teach unusual students the knowledge and skills that are needed to
work on a state of the art CAS. If you have any ideas on the
information these students should learn in such a process, and the
order in which it should be learned, I would be very interested in
seeing them.
Ted