Somewhat of a tangent - since Alan mentioned the Alto architecture. Chuck Thacker is working on a few interesting HW prototyping platforms at MS research.
Post by Jecel Assumpcao Jr.
I am *very* interested in this subject - not only do I hope that the
Squeak computer I am building will be itself an educational object, but
I am also helping two related projects. I'll briefly describe those two
projects before making comments on the "Nand to Tetris" course, but I
should mention that both of these take the "students should learn the
way I learned" approach with which I don't agree with at all. And it
isn't easy to help while letting them explore on their own. Watching
them happily test several little programs without pointing out that none
of their examples use indexed addressing and that they will need it a
lot later on is not easy for me.
Etienne Delacroix might be known to some in this list, but probably not
to most. An artist and a physicist, he is now back in his native Belgium
but spent most of the past decade roaming Brazil, Uruguay and other
countries in the region. He gave workshops to both university students
and to children where he used electronic components salvaged from old
computers to create interesting art. They would learn what transistors
such to get their results. Etienne's own projects often included a Z80
Lately he became interested in opening up the black box that is the Z80
or Pentium II and studied several online texts to see how to build a
processor out of TTLs. He was not interested in simulators or FPGA
implementations but wants something that he, and his students, can
touch. I helped him play around with such radical stuff as the
Subtract-And-Branch-If-Negative processor (around 12 TTLs) and he was
able to simulate several versions of his e-cpu, which currently only has
an 8 bit address. Together we evaluated some 16 to 20 educational
processors (including "Hack" of the "Elements" course). If there is
interest I could compile a list of links to the ones that are available
The other project is a book that two professors at my university want to
write. They teach introduction to digital logic and at the end of the
course the students have traditionally built a multiplication circuit
with an adder and control logic, but recently they have been doing
simple processors. Their idea is that the book (to be in Portuguese,
which will seriously limit their audience) would be roughly the course
they have been giving followed by a course on compiler writting with a C
compiler for their processor. Their processor is a simple 16 bit RISC
with instructions for reading from the keyboard and writing to the
screen (with redefinable characters - the students have done several
classic video games with this) implemented in entry level FPGAs
development boards. They are considering adopting this board for their
This option doesn't have the video output like their older boards. The
student doing the compiler has not yet taken any courses on compilers,
which I see as a major problem and they see as an advantage. Their idea,
like Etienne, is that someone who is also learning is in a far better
position to teach than some expert who doesn't remember what it was like
not to know stuff. I also advised them that they should have some
interpreted environement running on their machine, not just
cross-compiled C. Even TinyBasic would do. Otherwise their
readers/students will have an initial experience in computing more
typical of the 1960s than the late 1970s/early 1980s.
Given this context, I found the material in "The Elements of Computing
Systems" very interesting. I got a little worried when I saw that the
authors seemed confused about what "von Neumann" and "Harvard"
architectures mean, but the rest of their stuff is great. The use of
simulators instead of actual hardware lowers the cost for their
audience, but I do feel that there is some educational value in actually
being able to touch something you built. The exagerated simplicity of
Hack reduces the time spent designing the hardware but makes programming
it much more complicated (and not at all typical of assembly languages
people actually program in). But the idea is to develop only a single
program for Hack: a much nicer virtual machine. So it might be best to
think of Hack assembly as microcode.
One thing that is very hard to balance in an educational object is the
"low floor, high ceiling" thing. You have to make it simple enough to be
learned in a short time, but powerful enough to be useful in real life.
The "Elements" objects focus on the floor, so as soon as students have
learned their lesson the objects are thrown away never to be seen again.
Since they are just simulations anyway, they could hardly have any
practical value after the course so this seems like a good decision. If
I had to choose between teaching someone Logo to only later have them
replace it with something else or starting with something like C++ or
Java that they might use for years and years, I would go with the Logo
approach every time. But I would find it sad to see it thrown away.
While Basic is itself limited, for Logo the problem is more the
implementations than the language.
Etienne's solution will lead to a throw-away TTL processor. Once you
have understood what it does, you will want a Z80 instead for your next
project. The design of the two professors is a bit limited, but there is
no reason why it couldn't be used instead of Nios II or Microblaze even
in commercial projects. Chuck Thacker's series of TinyComputer
processors also have an extremely high ceiling. One detail I mentioned
to the professors is that if they take VHDL or Verilog as their starting
point (as Chuck does and they are currently doing) then they will be
left with a huge black box. The "start with just NAND" solution that
"Elements" and Etienne took will result in a much deeper understanding.
They don't have to be mutually exclusive - it is probably good to have
the students design the same processor both ways.
The result of STEPS will be something both learnable and usable - you
won't want to throw it away to go back to your Windows/Linux/Mac PC
instead. I see that as the major difference compared to "Elements" and
the two projects I described.
fonc mailing list