HTML, DOT and Non Turing Complete Languages

I've written elsewhere about why I think students should learn textual programming. One point worth restating is that in my experience it isn't the syntax that causes students problems when learning to program, it's the structures.

So why not teach students languages where the confusing structures don't exist? And by confusing structures, I mean loops and branches, these are confusing enough for beginners.

Let's stop there for a moment. The fact that you're reading this blog means you're probably a competent programmer. You're probably thinking that there's nothing very difficult about looping and branching, these are basic concepts, and of course they are. If you don't understand these, you can't program. And that's the point I'm trying to make. Some students will struggle with the concept of a simple loop to print out the numbers from one to ten. Many more students will struggle to apply that concept of a loop to problems, for example to realise that a simple password entry procedure requires a loop.

I think that it's a good idea to avoid loops and branches when students begin coding. Non Turing Complete Languages such as HTML and DOT give students a chance to learn syntax and to get a feel for coding environments whilst getting immediate visual feedback on what they've done. I think that DOT is a great place to start, it's a real world language with a definite use, one that can be of benefit to most users. I've written more about DOT here. Follow the link to my Dot and Graphviz Tutorial.