Both Scratch and Etoys are open source so it&#39;s just to pick what you want.<div>The model of Scratch and Etoys are quite different and it&#39;s a _huge_ job joining them.</div><div>I&#39;m not very familiar with Scratch source, but what I have seen is quite good and simple code.</div>
<div>It&#39;s made in a rather old image so much has changed since then in both Pharo, Etoys and Squeak.</div><div><br></div><div>I recommend you to make a few test projects and see what system fits your needs best.</div>
<div><br></div><div>Karl</div><div><br></div><div><br><div class="gmail_quote">On Sat, Dec 24, 2011 at 1:39 AM, Ralph Boland <span dir="ltr">&lt;<a href=""></a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I want to develop a system for teaching various algorithms<br>
that students learn starting from primary school all the way<br>
to high school and perhaps even into university.<br>
For this I need a core system and for each algorithm an<br>
application layer on top of the core needs to be written.<br>
The idea is the the student first solves the problem by<br>
hand, then implements low level components of the algorithm into<br>
procedures and then is able to solve the problem more quickly by<br>
invoking these procedures by hand.  Then these procedures can be<br>
combined into higher level procedures that the student can use to<br>
solve the problem even more quickly.  Eventually the the entire<br>
algorithm is implemented into a top level procedure that the student<br>
can invoke.<br>
Thus the student learns all the steps of the algorithm (since (s)he initially<br>
does them by hand but also combines them into procedures that can be called<br>
but the student also learns programming at a basic level.  It is<br>
noteworthy that once the student has partially implemented the algorithm<br>
(s)he is able to solve large instances of the problem by using the procedures<br>
already implemented.  For example, a student learning long division could<br>
compute  91935 / 45  more easily after implementing subtraction and<br>
multiplication of a number by a single digit.  The student could then do the<br>
division even faster by implementing a procedure that combines subtraction and<br>
multiplication of a number by a single digit.  And so on.<br>
Algorithms I am interested in implementing include  multiplication,<br>
long division,<br>
simplifying fractions. and simple linear algebra.<br>
I am also interested in Chemistry/Physics and university level algorithms.<br>
For example Gaussian elimination and the simplex method could be<br>
taught this way.<br>
OK so where does EToys fit in?<br>
Well, I don&#39;t want to implement this utility from scratch.  But<br>
EToys,  Scratch,<br>
and  BYOB/Snap all implement aspects of what I need already.  Scratch looks<br>
like a better fit than EToys and  BYOB/Snap looks even better (has procedures<br>
and recursion (recursion is useful for simplifying fractions for example)).<br>
Unfortunately for me,  Scratch is being ported to Flash and  Snap is<br>
being rewritten<br>
in Javascript but I very much want to continue working in Smalltalk.<br>
A version of Scratch has been ported to Pharo but the porters suggest<br>
that the best thing to do is rewrite Scratch from scratch since it is<br>
so poorly written.<br>
So my question is: Would it be better to use the core of EToys to<br>
build my system.<br>
For that matter, if I wanted to re-implement Scratch should I not use<br>
the core of<br>
EToys to base it on?  This probably means that EToys would need to be<br>
to some extent so that a core could be separated from the &quot;EToys Application&quot;.<br>
In fact, I might need a Scratch/Snap core that goes on top of  EToys core.<br>
For that matter should not EToys and Scratch already have been written with<br>
a common core?<br>
For those of you familiar with the Enchanting project (which allows programming<br>
of the Legos Mindstorms robot using a version of Scratch)  I would<br>
also want to be<br>
able to base Enchanting on the core of EToys.  By the way Enchanting<br>
is an example<br>
of where a web based version of Scratch is not going to work so it<br>
looks like Enchanting<br>
developers will have to maintain their version of Scratch.<br>
So what should my plan be?<br>
<span class="HOEnZb"><font color="#888888"><br>
Ralph Boland<br>
etoys-dev mailing list<br>
<a href=""></a><br>
<a href="" target="_blank"></a><br>