In several episodes of the comedy TV show “The Big Bang Theory”, Sheldon, the main character, complains that people are “having fun wrong.” What he means of course is that they are not doing what he thinks of as fun. We see that sort of thing a lot these days. “You’re not using Twitter right” or “You’re not using Facebook right” or today I read “American schools are teaching our kids how to code all wrong” The author of that article suggests strongly that the courses and curriculum their company sell are doing it right of course. It’s everyone else who is doing it wrong.
The article above takes particular aim at drag and drop programming in general and code.org materials in specific. I don’t think either criticism is really fair. Drag and drop programming languages are being very effectively used to teach real computer science concepts as well as programming. Even Harvard’s famous CS50 course starts with Scratch! The author of that article makes it seem as though short exercises like those for Hour of Code are all that code.org is producing. That is far from the case. They are producing a wide range of curriculum for a wide range of age groups. Much of this is very extensive and goes into a lot of detail and complexity.
I think that what bothers me the most about that article is the implication that it is addressing US computer science education in total or at least in large part. That is also not the case. Just the two Advanced Placement courses have multiple popular curricula many of which don’t use any drag and drop tools at all. Certainly the APCS A course is Java all the way. We teach three text based programming languages at my school and last I checked we were an American school.
This is typical of the naysaying I have been reading about the CS for All movement that is getting so much attention. People keep saying “but they’ll do it wrong!” as if that is a reason to keep computer science for some small subset of people where it can be done “right” for their specific definition of “right.”
There seems to be a fear that CS for All means we will wind up with a lot of people just doing some simple stuff like a short experience with block or tile programming and call it computer science. I don’t think anyone pushing CS for All wants that. I’ve talked to enough people at code.org to know they don’t want that. No one I know involved with CSTA wants that. In fact I don’t know anyone at all who wants that.
People don’t really trust government to do the right thing with regards to CS education. I get that. But that doesn’t mean we don’t try to develop programs of CS education for everyone. There are lots of ways to teach CS. No one way is best for every student, every school, or every teacher.
We are fortunate that there are a lot of different ways to teach CS these days. From CS Unplugged (no computers necessary) to block and tile languages to fun little devices like the BBC Micro:Bit and Ozobots to easy to use Integrated development environments to old fashioned text editors and command line compilers. We can teach CS to everyone. We may not bring everyone up to a professional level but we don’t do that in any other subject we teach in school either. Differences in depth, breath, and mastery are fine. But everyone should have a chance to learn computer science. Even if they don’t have fun with it the way you have fun with it.