An article in last week's Education Week reports that schools are falling behind in their computer science offerings at the same time that the demand for programmers has risen. Computer science advocates are now calling for more computer science offerings in public schools.
Proponents of computer-science education say a major hurdle is simply getting school officials and others to understand what the field is, and isn't.
"One of the biggest problems is schools confusing computer literacy with computer science," said Barbara J. Ericson, the director for computing outreach and a research scientist at the Georgia Institute of Technology, in Atlanta.
"A lot of places don't understand the difference," agreed Ms. Cuny of the NSF, which is providing grants to support a variety of programs and research undertakings on computer-science education. "They're not teaching kids how to be creators of technology—they're teaching them how to be users of technology."Sounds a bit like the confusion between teaching science and teaching science appreciation, and it's nice to see that the computer science advocates, unlike many of the science advocates, understand the difference.
Learning to *use* computers is easy. Learning to *design* computer hardware or to write software that handles edge cases properly and not just the “happy path” is difficult. Millennials think they’re smarter than the boomers and the boomers’ parents merely because they can use the technology. They forget that the boomers and the generations before them invented the technology that the millennials are using.
- Internet (ARPAnet): 1960s, created by a team at MIT who were born late in the Silent Generation.
- First email message: 1969, sent by a Boomer.
- First cell phone: 1973, invented by Martin Cooper, Silent Generation.
- World Wide Web, first HTTP communication, 1990, Tim Berners-Lee, a Boomer.
As for music recording and playback: the pulse-code modulation that makes it possible was patented in 1937 by a member of the Greatest Generation. The first digital speech transmission was in 1943; computerized digital recording was invented in 1957.
If we don’t provide the STEM grounding necessary to understand the technology already in existence (how and why it works, not how to use it), I don’t see how future generations will be able to invent anything of substance.
Without pointers, for example, you'd never be able to work on the Linux kernel. You can't understand a line of code in Linux, or, indeed, any operating system, without really understanding pointers.
Without understanding functional programming, you can't invent MapReduce, the algorithm that makes Google so massively scalable.
Pointers and recursion require a certain ability to reason, to think in abstractions, and, most importantly, to view a problem at several levels of abstraction simultaneously. And thus, the ability to understand pointers and recursion is directly correlated with the ability to be a great programmer.
What he says about pointers and recursion enforcing and testing a certain way of thinking is a very important point, in my opinion.As our problems of the week here have shown, Seth has good reason to be scared. In connecting geometry proofs with computer programming, he raises an important point: is the American education establishment, with all its calls to teach "higher level thinking skills," no longer interested in logical reasoning?
But what I found really disturbing from helping to teach that course was that it was possible, indeed universal, that the students who came from the best high schools and had the most experience had never been exposed (consciously) to problems of recursion. Why is it that e.g. the Towers of Hanoi problem has to wait until college to be taught? Students need to be hit with this when they're younger, before their brains start to rot.
I really wish that when people talk about the need for computer in schools, the focus would be not just on computers, but computers as a way to teach how to think about breaking up a problem. But I'm an old-fashioned fart, so I still think that one of the best preparations for programming is geometry, and the process of proving a theorem. I'm scared to ask if that is still taught in high schools.