I disagree. I am glad that schools do not teach computer science. Can you imagine what bastardized "Computer Science" they would teach if they tried? You want the same people who brought you "New Math", who teach the beauty of mathematics as a brute-force memorization exercise optimized not for comprehension but for easy testing, and who are blown about by educational fads like a feather in a breeze, to teach computer science?
What would such a "computer science" look like? I don't know, but the odds of it being actively anti-educational are far too high for my liking. Can you imagine what a computer science optimized for testability would look like? I can see it now:
"Fill in the blank with the correct variable name."
"Organize these lines of source to correctly sort the list."
"Find the thirty-three keywords of $CRAPPY_LANGUAGE_WE_STANDARDIZED_ON_TWENTY_YEARS_AGO in this word scramble."
"Which of the following is the definition of 'strong typing'? A: wrong answer B: wrong answer but defendable C: essentially wrong answer from 30 years ago the curriculum officially calls correct D: a more right answer than C but still wrong"
By that logic, we shouldn't teach chemistry or physics in schools either.
I would have loved to have been exposed to some CS in school. For some reason, my otherwise rather privileged schooling didn't feature any computing, and nobody in my direct environment did any. Only after starting a Physics undergrad did I meet some proper hackers, and years onwards I still feel like I'm years behind on them.
"By that logic, we shouldn't teach chemistry or physics in schools either."
I'm pretty comfortable with that conclusion.
Anti-teaching, the teaching of things that are actively misleading about the nature of the subject or even actively wrong, is a bad idea. It doesn't matter how much "prior art" it has. It doesn't matter how much we have to just fill time while the students are sitting there. It doesn't matter whether there isn't a "better choice", because nothing really is a better choice than anti-teaching. Anti-teaching is a bad idea.
Besides, ask around. Ask your non-geek friends simple, basic physics questions. If you like, even ask if they took physics in high school. If the goal of physics is for students to pass a test in school, we're OK. If the goal of physics is to give the general public an understanding of simple, basic Newtonian physics... we already aren't teaching physics, we're just going through the motions. The "threat" you raise is already the situation we are in.
I just finished teaching Bootstrap (http://www.bootstrapworld.org) in an after-school program at 2 middle schools: one in inner-city Oakland and the other in Daly City. The Bootstrap curriculum doesn't look anything what you describe. The students start off writing simple expressions and then move on to writing some core functions in a 2D side-scrolling video game. It's not only an introduction to programming, but also a concrete application of algebra to a problem that many kids are passionate about -- making a video game. For most, or maybe all, of the students in my Oakland class (6th- and 7th-graders), it was their first encounter with variables, functions and abstract thinking, e.g., accomplishing animation by performing math operations on variables representing idealized x/y coordinates.
There were attendance problems in Oakland due mainly to external factors, like parents not wanting their kids walking home after dark. Only 7 of the original 13 Oakland students finished the class, compared to 12 out of 14 in Daly City, but everyone who finished the class in both Oakland and Daly City had a working program by the end of the 10-week course. I think it's fair to say that all of the students who finished have a reasonably good understanding of some basic computer science concepts: functions, variables, applying operators to values, evaluating expressions, and a simple notion of types (strings, numbers, booleans and "images"). The obvious next steps would be iteration/recursion and some simple compound data structures, but we didn't have time for that in just 10 lessons, which is all that this particular after-school program permitted.
My point is this: middle school students can handle a fairly rigorous approach to introductory computer science. Saying we shouldn't teach something because it will be taught poorly is no excuse not to teach it the right way -- we just need people qualified to do that. That's the real problem, but most of you who're reading this could help do something about that by volunteering to teach a curriculum like Bootstrap.
"We continue to teach our kids French but we don't teach them Ruby On Rails. Which do you think will help them more in the coming years?"
Asked that way, I'm not so sure the question has a definite answer. French will still be French by the time today's middle school students graduate from college, but Ruby on Rails just might be old-fashioned technology by then. And maybe the paradigm of programming in general will have changed by then more than any modern language has changed. I'm not disparaging computer science as a subject of study--in fact my oldest son did learn more computer science in middle school (mostly C through the Eric Roberts texts used by the EPGY distance learning program
but also Logo) but foreign language study is important too. As another article submitted in the last few hours points out, schools don't teach nearly enough mathematics these days, either, so the whole curriculum has to become more efficient to squeeze in one more subject.
I homeschool my children to have more flexibility to choose better curricular materials and to have efficiency in teaching so that my children devote the most time to the subjects they NEED the most time for. That allows them to learn programming at middle school age while also being bilingual and well practiced in writing and mathematical problem-solving.
I've 'lost' more potential jobs due to not being able to speak French than not knowing Ruby. Also I'm pretty sure I can become competent in ruby on rails a lot faster than I can become competent in French.
Competent, sure. However you can learn a spoken language much faster then people imagine. You could have conversations in french by christmas next year with some basic courses, a good software, some tenacity and a 2 week vacation.
That is a false dichotomy - kids should learn languages and get some exposure to a decent programming languages. As far as I am concerned, I'd like to read Proust (and Schiller) in the original languages but I'm not aware of anything in Ruby that I'm so keen to read.
I started learning BASIC on an Apple IIe in 5th grade when a couple of other students and I figured out that we could write programs on the computer. We were taught a bit of Logo in a 5th grade class, but mostly we just learned on our own, staying in at recess and writing programs at home. (We were blessed with parents who bought Apple IIe machines as well.)
I don't remember the last time I touched a line of Apple IIe BASIC; it was probably around 6th grade. Later, I learned C, and then moved on to a variety of other languages. The learning of BASIC per se wasn't particularly useful, but the fact that I learned to program at all was very useful. I'm not convinced that the long-term viability of the language (or even the particular programming paradigm) is very relevant. It was writing poorly-understood BASIC code that got me into programming, and without that start, I probably wouldn't be writing programs of any sort today.
I think this is really, really important.
We start teaching students the foundations of chemistry, physics, and various areas of mathematics as early as Sixth grade, but Computer Science is largely ignored. Hell, it's hard enough to find a decent CS curriculum in High Schools. Students who would never dream of studying computing might find that they have a passion for it if they are exposed to it early enough (in a kid-digestible way, of course) I remember reading a study (I wish I could find it to cite) that showed that students who were exposed to CS courses early were more likely to have a favorable opinion of the field ("it's not just for nerds")
Finding people who are capable/willing to teach CS is one of the biggest problems here, I think.
I remember reading a study (I wish I could find it to cite) that showed that students who were exposed to CS courses early were more likely to have a favorable opinion of the field
I grew up in an era when BASIC was a standard part of the curriculum at many junior high schools, and I had a nominal course in computer science in high school also. But both were deadly dull. Sometimes it's better for children to learn a subject directly from hobbyists or professionals (as did several of my high school classmates who became professional computer scientists eventually) rather than from clueless schoolteachers who teach the course in desultory fashion.
I definitely agree. Introducing the material isn't enough, there have to be quality educators who are also knowledgeable of computing. You mentioned hobbyists and professionals and I think this is a fantastic idea. Actually, Georgia Tech's College of Computing has a program designed to take out of work IT professionals and help them become teachers: http://bit.ly/17xgiT [cc.gatech.edu] Pretty neat.
I think the important learning for the child's development is how to think algorithmically or within the confines of a determined system. That application of systemic thinking to solve problems is so valuable in many ways throughout life, from determining how other systems work to just making smarter guesses about how to use new objects you've never seen before. Regardless if it's taught as theory, applied projects, or whatever, that's the really valuable skill IMO.
Algorithmic/systemic thinking, combined with the basic principles of physics do wonders to get you through problems that life throws at you.
To throw in some personal experience to the discussion, I went to an elementary school where we were taught BASIC (in addition to a lot of 'practical' classes that aren't included in most American public schools). I can definitely see how some of the problems people are talking about would arise, but as a direct result of that and similar classes, I and several of my friends picked our careers very early on, taught ourselves what we needed to know, and landed our dream jobs before we were even close to college. We had a practical hobby, excelled at math, and have done quite well for ourselves.
I really wish the public schools where I live now would step up to the plate and teach some more practical stuff. I really feel a lot of the kids are wasting their time with stuff they don't really enjoy, and don't need to be taught over and over again.
I know for a fact that every middle school in my immediate area teaches computer programming of some kind. It's an elective but it's available.
As for it being required of every student I don't know that I agree with that. I work with "non-computer" people who I swear to you lack basic problem solving skills (by their own admission they are "emotionally intellegent"). I'm not sure those people would be capable of understanding and implementing the basic logic structures needed to program and I'm not sure it's fair to set them up for failure.
I think this is the reason that classes like Physics are also elective. Everyone should have a basic understanding of Physics but I'm not sure you can require that of people who aren't math inclined (remember you can graduate High School having only taken first year algebra)
I was introduced to programming in 5th grade (around 1990) where we made our own adventure games in computer class using World Builder (http://en.wikipedia.org/wiki/World_Builder) on 9-inch compact Macs. Everyone in the 5th grade took that class. The programming section was a small part of the whole curriculum and was presented in a way that everyone had a pretty good time with it.
When I attended middle school there was a mandatory programming class. We all got to program in BASIC on some Apple computers. That had a pretty lasting influence on me, and may very well be responsible for my career path.
I also just recently finished teaching an after school program on using Scheme to program a (simple) computer game at a middle school. While it was only a 10 week program that met once a week, I think we had a fair degree of success.
I think it's a good point but it shouldn't go to the other extreme either. A lot of people would hate computer programming, so they shouldn't be forced to do it. The focus should be on teaching well and helping kids who are interested to develop the skills.
From what I remember of middle school, they DID teach us a little comp sci. They taught LOGO for about a week. Seemed pretty fun. It was at least mostly competent from what I can remember.
What would such a "computer science" look like? I don't know, but the odds of it being actively anti-educational are far too high for my liking. Can you imagine what a computer science optimized for testability would look like? I can see it now:
"Fill in the blank with the correct variable name."
"Organize these lines of source to correctly sort the list."
"Find the thirty-three keywords of $CRAPPY_LANGUAGE_WE_STANDARDIZED_ON_TWENTY_YEARS_AGO in this word scramble."
"Which of the following is the definition of 'strong typing'? A: wrong answer B: wrong answer but defendable C: essentially wrong answer from 30 years ago the curriculum officially calls correct D: a more right answer than C but still wrong"