Never mind what Slate says, computer science for everyone makes sense to me

I understand where programmer Chase Felker is coming from when he writes in Slate that it’s time to ease up on pushing kids into programming, but I’m not ready to jump off the bandwagon he describes as overcrowded.

Felker’s key concern appears to be that with the proliferation of computer science learners comes a proliferation of computer science teachers who are not up to the task. I’ll admit this is something he knows more about than I do. Felker writes:

“It seems that many computer science instructors—whether in person or in a self-guided online class—are failing to teach people to recognize what they don’t know. And if you don’t know what you don’t know, credentials are pretty easy to come by.”

Even if some students are receiving less-than-ideal training in programming, Felker’s thinking strikes me as making the perfect the enemy of the good. In fact, I’d like to see computer science as a required course, maybe in middle school and definitely by high school. Does that mean I think everyone should become a computer scientist? Absolutely not.

But computer science is so fundamental to almost everything we do and everything that happens in the 21st century, that it would be wise for the citizens of tomorrow (and today for that matter) to have some idea of how programming works.

I’d argue that computer science is to the 21st century what Latin was to the 20th century (at least the first three-quarters of it). Through much of the last century it was just expected that a well-educated person had some familiarity with Latin. It was a key foundation for the English language and understanding Latin helped one understand the ins and outs of prose and poetry.

Computer science in this century is the foundation for huge industries (Facebook and Google anyone?), and fields (such as data analytics). Computer models are used in economics, social sciences, biology, medicine, energy fields, education and on and on. I’m not arguing that those working in finance, for instance, need to actually write the programs they use. I just think it’s better if they understand the principles behind those programs.

Felker doesn’t buy it:

“One common argument for promoting programming to novices is that technology’s unprecedented pervasiveness in our lives demands that we understand the nitty-gritty details. But the fact is that no matter how pervasive a technology is, we don’t need to understand how it works—our society divides its labor so that everyone can use things without going to the trouble of making them. To justify everyone learning about programming, you would need to show that most jobs will actually require this. But instead all I see are vague predictions that the growth in “IT jobs” means that we must either “program or be programmed” and that a few rich companies want more programmers—which is not terribly persuasive.”

He also worries that requiring students to take programming would mean they wouldn’t take some other vital course that we already might not be teaching, to which I say: Teach them both.

Beyond the importance of computer literacy, there is another compelling reason to require all middle school or high school kids to take programming in order to graduate. For the past several weeks I’ve been working on a project that looks at the relative paucity of women enrolled in college computer science programs.

It’s a problem that Felker alludes to in his piece:

“Frankly, just the idea that you can learn to code in a year gives me the creeps: I would be terrified if someone with only a couple of classes were writing programs for me, not because he (of course, and unfortunately, most programmers are men) has learned anything wrong—but because of what he doesn’t know.”

A number of the experts I’ve talked to say one reason for the disparity between men and women studying computer science is the fact that boys, through social forces and other factors, gravitate toward computers and are exposed to programming earlier in life than girls are.

By the time females are exposed to computer science and understand exactly what the field involves, they are often in college and well on the way to a major in some other field. Requiring girls (and boys) to take computer science earlier in their academic careers would at least give girls the chance to decide whether it was a career they want to pursue.

That would be worth making CS a requirement right there.

Photo: Scene at SuperHappyDevHouse event by Mercury News photographer Dai Sugano


Tags: , , , ,


Share this Post

  • Barry

    I agree with you completely: all students should have at least an introductory class in programming as a requirement to graduating from high school. The goal isn’t to teach how to program. It’s to increase the depth and scope of understanding, as it is with so many things, such as a foreign language, basic algebra and geometry, and, for that matter, the arts.

  • Mike,
    I think you make some very good points. One of the challenges in teaching kids to code is that is is a fairly hands on activity. My son and his friend created the Menlo App Academy to share the programming skills that they had learned. Watching kids teach other kids to teach is an worthwhile experience.
    If you ever wanted to meet Matt and Max I am sure they would have an interesting POV for you.
    Thanks for highlighting an important issue.

    • Thanks Gary. I seem to remember reading about Matt and Max. Was that in my favorite newspaper, the San Jose Mercury News?

  • JCF

    This article appears to use the terms “computer science”, “programming”, and “computer literacy” interchangeably.
    My question: “if you teach “computer science”, what exactly will you be teaching? How not to be intimidated by an iPad? How to program in C? (which in 20yrs will be about as useful as the Fortran classes I took that long ago), or some fundamental ideas about how computers can programmed, such as using a meta-language to solve some easy problems?
    Maybe Felker’s issue is that the phrase “teaching computer science” is not well defined.

  • Cindy

    I definitely think we should require computer science for more students. When I was a Mathematics major, I was required to take introductory computer science, and I was not happy about it – I had no desire to work with computers, I thought. But I had a really great teacher, surprisingly enjoyed the class, and I decided to take another one. Then I thought I’d minor in computer science. Then I got a double-major. My senior year I graduated as the #1 student in the computer science department. It is certain that there would be one less female engineer in Silicon Valley if I had not been required to take that first CS class.

  • Robert Taylor

    Computer Science is not equal to computer programming, though many curricula treat it this way. There are many ways to teach beginners a little about what computers can and cannot do, a little of how they work, a little of how they are used in various industries and little of what they might become and why. All of this would lead to much less mystery (and much less gee-whiz) about computing in the general population.

  • sd

    Felker could make an argument that spending precious teaching time and dollars to make students proficient in some committee-chosen computer language or another is at least inefficient, if not downright wasteful.

    But no matter the language, learning how to code even something slightly more accomplished than “Hello world” brings meaningful insight into automating processes of any kind, accommodating the unexpected answer — or at least identifying what information you expect in and out of the code, identifying assumptions made when coding, and so on.

    When people are so willing to assume that what the computer tells them is the truth (people who strand themselves because the GPS was wrong) or to accept computations at face value (where did that chart come from? What questions were asked to gain the data represented?), learning more about how the blinking box works (or *doesn’t*) is key to the literacy needed in developed cultures.

  • ccw

    I’ve been thinking about these several interrelated topics for most of the 30 years that I’ve spent in ‘IT’… I will try to focus this reply on just one or two of them.
    Different people have different ‘natural aptitudes’. (This is my observation; experts in other disciplines can debate it.) I wouldn’t expect to become an opera singer, no matter how much I worked at it.
    The most valuable skill(?) I have seen in my career has been the ability to abstract a number of general principles and apply them to various problem contexts – whether moving between lines of business or moving forward in time with any business’s evolution and adoption of the ever-changing technologies mentioned in others’ comments.
    For me, fundamental principles certainly came from mathematics, ‘the language of science’ – set theory, algebra, logic, directed graphs, calculus. Exposure to the application of mathematical principles in fields like physics, economics, music, statistics, astronomy, insurance, drag racing, pharmacokinetics, etc. has taught a number of real world solutions, from which more general ‘design patterns’ can be abstracted.
    An understanding of algorithmic processes is essential. IT solutions apply design patterns algorithmically to information, ‘inputs’, in order to produce ‘outputs’, information that is used to perform, control, or inform operations by devices or humans in the field of the application ‘problem’.
    At some point any of these concepts is ‘something we don’t know we don’t know’, and so competent teachers reveal and assist us in incorporating them into the perspective we bring to our world (not just the job).
    Someone who has suitable aptitude, competent education, and the socioeconomic opportunity, has a good chance to enjoy a professional career in a field like software engineering or information architecture, I think.
    Someone who takes a short-term focus of acquiring a particular technical skill, such as Java programming or webpage design, should expect less employment security and success.
    Summing up, individual skills like programming are performed most effectively from a foundation in both theory and application. Not everyone has an aptitude for the theoretical principles and their application. Competent educators can be very important.

  • Jessica

    As a past high school teacher, I couldn’t agree more that the earlier you introduce something like Computer Science to a child, the better. STEM
    related careers
    are the way of the future.

  • Jessica

    STEM related jobs are growing exponentially, and it is important that students are introduced to concepts like computer programming while they are still in their younger years. No matter what career path they end up choosing, there is a VERY high chance they will need some type of technology skills.

  • George

    Interesting points, yet ruined by this nonsensical whining about why there aren’t more women in computer science. Why is that important? Is anyone out there actively preventing women from going into CS? No! Have you done any studies to figure out why there aren’t more male Kindergarten teachers? I bet the percentage of female CS pros is much higher than the percentage of male K teachers, so why aren’t you crying about that? What about male nurses and the almost complete lack of short white guys in the NBA? When are you do-gooder douche bags gonna realize that your “help” is not needed? You feeling good about yourself is not making the world a better place. If anything, you all constantly harping on the fact that there aren’t many women in CS is probably having the opposite of your desired effect (as is often the case with misguided do-goodery). That is, how many girls are scared away from the CS by all these articles saying CS is mostly a man’s game?