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 are, how to use TTLs chips and then would mix Javascript software and such to get their results. Etienne's own projects often included a Z80 processor. 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 online. 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 text: http://www.altera.com/b/nios-bemicro-evaluation-kit.html 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. -- Jecel _______________________________________________ fonc mailing list [email protected] http://vpri.org/mailman/listinfo/fonc
