Programmers like to program because they can do cool things, or because they can solve problems, or both. It's both creative and it's practical. If the goal of a high school course is to get people interested in programming, then the course must build around these two pillars.
I first learned to program in BASIC on the VTech PreComputer Prestige. The things I wrote were simple Fahrenheit-to-Celsius conversions, guess-the-number-I’m-thinking programs, but they were really cool in the mind of an elementary school kid. Once my dad got me a copy of Visual Basic 2 that would run on our real Packard Bell Navigator Windows 3.11 computer, I was in heaven.
My junior high had two great programming classes. We didn’t do much theory, but Mr. Ferrin taught us a good balance of programming practice and Visual Basic GUIs. The high school had one class in the business department that tacked on VB6 for a measly two or three weeks, but like Benjamin, I knew nobody who actually liked programming after taking that class.
A few of my friends had great computer science teachers in high school, but most of them gained their love of programming by solving their own problems outside a formal programming course. Secondary education is ripe for reform in computer science curricula.
I'm lucky right now to be working with Bayside High School in Queens, who's developing a program for CS students that looks a lot like the above, with introductory classes focusing on tangible results students can play with immediately (web applications, little GUIs, and dumpster-diving through massive datasets) rather than wading knee-deep into theory right from the get-go. But there are many, many high schools out there who have nothing remotely like this, who teach programming the same way they teach math. If the high school in your area's like that, volunteer to teach something more inspiring. The students will love it, and we'll get more impassioned developers as a result.
I might just do that.