Hacker News new | ask | show | jobs
Bootstrapping Forth
8 points by martincho 4583 days ago
I am getting ready to author a series of tutorials on bootstrapping Forth starting with a "blank" microprocessor.

I am doing this as a microprocessor and programming fundamentals mini-course for my son's FRC [0] (FIRST Robotics Competition) club.

The intent is to teach basic digital logic and programming at the lowest possible level as a solid foundation for development at higher levels. Almost any modern language becomes easier to understand once armed with an understanding of low level concepts.

I am looking for input on how to approach it. I've done seminars for working engineers in the past. In this case I have to assume no prior knowledge of any of the material to be presented. At a basic level three approaches come to mind:

    - Text based.  You have to read it.  Slides.
    - Video lectures.  I present on video while showing relevant slides.
    - Interactive.  Like video lectures.  Uses a real-time recording of
      terminal window much more so than pure text slides.

Of course, I'll design and build a little microprocessor board the students will use during the course. Not decided on architecture/processor yet. On simple 8 bit embedded projects I've tended to use various 8051 derivatives. This is one option. I've also used parts from Microchip, TI, Freescale, Cypress and others.

Thanks!

[0] http://www.usfirst.org/roboticsprograms/frc

2 comments

Interesting book. Not sure how it might apply to what I am trying to do though. While I haven't used Forth for quite some time I did use it extensively for a number of years. This included bootstrapping in a couple of small processors. The process is surprisingly simple. From memory, a significant portion of the work was having to write drivers for the various I/O devices needing support.

I have a number of ideas for the minimum I/O set to support initially. Of course, this could easily be enhanced through expansion ports.

I am trying hard to limit the scope of the project. It's far too easy to complicate the heck out of it.

I'd favor video lectures. What you're proposing is pretty ambitious for teen learners, so (posted) videos will allow them to rewatch them, pause to take notes, etc. Good luck!
I tend to favor video as well. My kid is almost through with MIT 6.00.1x Intro to Computer Science with Python and he's done pretty well. I've helped him along the way but was happy to see him need less help as he progressed through the course.

Part of me thinks that starting at a much lower level might actually be easier in some ways. Not sure at this point.