Friday, July 20, 2012

HTML is not programming, so why teach it?

So in talking to parents and guidance counselors I occasionally get asked if a kid can jump ahead and take one of our upper lever computer science classes. My first question is always "have they programmed?" Yes, I know, programming is not the end all and be all of computer science, but for a student that wants to take the current AP Computer Science course they need to be able to code.

Sadly the answer I most often get is "yes, they know HTML". Sigh.

For the CS Principles pilot this last year my second unit was The Internet Unplugged.  We covered both the hardware side along with how to actually make a web site. Yes, I taught HTML and CSS.

So the question is - why cover HTML at all?

One of the core themes of the CS Principles course is broadening participation. So many students have had exposure to HTML, and they all use web sites. This is the interface they use to get at the information on the web. It is an immediate way to show abstraction in action.

Plus, as we transitioned to coding students were already used to the idea that formatting and exact punctuation matters. This let us focus on the tools of programming, like ifs and loops.

And of course, CS Principles is not all about programming. The Internet is one of the seven core principles, equal to programming.

So this summer I am reviewing what we did in CS Principles last year. Honestly this was one of the better units we covered. It tied into all of the big ideas and was something we referred back to the rest of the year.

On the other hand I am not crazy about how I taught HTML. It was a bit dry - too much lecture and we got a bit bogged down. I'd like to reduce this to just 4 days.

Next year I plan on trying Thimble. This is offered by Mozilla and lets you type in the HTML interactively and see what happens immediately. It also points out errors right away.


  1. Thimble looks cool! You might want to check out Hackasaurus as well:

    If you want to incorporate JS and CSS, jsfiddle is a great tool:

    And HTML is a programming language. It's a declarative language, so it's not very helpful when it comes to teaching procedural or functional or object-oriented paradigms. However, having this background in place with students makes some more sophisticated projects possible, such as HTML generators and parsers.

  2. Exactly - which is why it is so worrisome when parents/guidance think a kid is totally prepped by knowing HTML. It is a good start (great in some ways) but no where near enough to have someone ready for intense Java programming.

    Thanks - jsfiddle looks like a good tool!


So, what do YOU think?