While on the way to the gas station to fill up my wife’s car this morning after dropping my son off at school, I heard a fascinating story on NPR. It’s from their “All Tech Considered” series of pieces, is entitled “A Push to Boost Computer Science Learning, Even at an Early Age,” and it tackles a pretty controversial set of related subjects. All of these things make it well worth a visit, or even an audition of the story as aired (a link to this 6:05 piece is available on the page above).
Education groups seeking to address perceived gaps in public school curricula echo a sentiment I share — namely, “When it comes to computing or programming, you can’t start ’em too young!”
[Image Credit: Shutterstock 89245327 ©ollyy]
The lead-in paragraphs for the story set the tone for its overall coverage and discussion:
A handful of nonprofit and for-profit groups are working to address what they see as a national education crisis: Too few of America’s K-12 public schools actually teach computer science basics and fewer still offer it for credit.
It’s projected that in the next decade there will be about 1 million more U.S. jobs in the tech sector than computer science graduates to fill them. And it’s estimated that only about 10 percent of K-12 schools teach computer science.
The story is worth a read, but I’m going to use it to ride a personal hobby horse here. For the past year, I’ve been getting up pretty early every Wednesday while school is in session to head to my son’s elementary school, where I’ve been volunteering to help with (last semester) or teach (this semester) a programming class to 4th and 5th graders there. When we approached the administration to be allowed to teach such classes, they greeted the proposal with considerable enthusiasm and support, but suggested that we stick to the higher grades because they have enough exposure to math, science, language, and basic computing skills to be able to think their way through simple coding problems, basic program design, and enough focus and drive to see a problem through to a successful solution from an initial assignment or problem description.
1. From the start of elementary school, kids need to learn basic computing skills (how to boot up and log into a PC, fire off Web browsers and surf, launch and read e-mail, and so forth. You don’t have to teach them ANYTHING about games, because they get this on their own, usually faster than you could teach them anyway).
2. It’s extremely helpful to teach kids keyboard shortcuts early on, especially basic cut’n’paste commands (Ctrl-C, Ctrl-V, Ctrl A, etc.) and other common key combinations.
3. In prepping my son for his 4th grade science project, I found myself explaining the major subsystems on a PC, with special emphasis on which ones consume more energy than others (he ran tests on a variety of Windows Power Plan settings through Advanced Options to learn that reducing PC clock rates and screen brightness levels produced longer battery life than either item by itself, and also observed that, contrary to our expectations, on his test machine — a Lenovo X220 Tablet — reducing PC clocking had a bigger overall impact on battery life than did screen brightness). Basic system composition, architecture, and peripherals are good things for all kids to know about.
4. Some kids get programming intuitively and easily, and others struggle to understand and master the same material, but all first must learn some basic keyboarding — what we liked to explain to them as “typing,” or more ambitiously, “touch typing” — skills before they can really make much progress.
Based on this small and very local sample, what I’d like to see become part of the elementary curriculum, well in advance of any “computer science” training is keyboard training that begins in first or second grade (with opportunities for kids to play on computers at Kindergarten or even Pre-K levels). As they’re learning the alphabet and basic spelling and language skills, there’s no reason why keyboarding can’t help reinforce and amplify that learning. By third grade, they should get basic computing 101 training, and some understanding of the machines that they work on already from a “pieces and parts” perspective. One foundation for computer science is an understanding of computing (calculation, algorithms, binary arithmetic, logic, and so forth), another is an understanding of computers (the computer and peripherals that store and operate on data, accept input, provide output, and so on). Let’s bring these very basic building blocks into elementary schools as part of the curriculum (rather than on an early morning, all-volunteer basis), and take off from there in middle and high schools, please!