Computer Science Without Programming?

There have been some interesting discussions in the blogosphere recently about whether computer science could (or should) be taught in K-12 without programming.
At the elementary and middle school levels, the CS Unplugged curriculum is one way to engage students in real computer science without even needing computers. And when we do use programming tools at this level, they tend to be exploratory — a developmentally appropriate way to learn.
In the high schools though, I think we have it completely backwards. Too often, we teach programming without computer science. Courses such as “Introduction to Java” and “C++ Programming” abound. Even the remaining AP course is focused almost solely on programming. Although we’re now becoming “enlightened” and are moving towards programming environments such as Scratch, Greenfoot, and Alice, we still gear our courses around the tool rather than the computer science. We’re just replacing “Programming with C” courses with “Programming with Alice” courses.
There’s somewhat of an analogy in the mathematics curriculum these days. I recently tutored a student who wanted to review for the SAT math exam. As we were going over sample problems, we’d talk about approaches to solving the problem. Much too often, when I’d suggest the traditional mathematical solution (for example, using the quadratic formula or factoring a quadratic polynomial to find its zeros), she would tell me that she didn’t know how to use those methods. Instead, she’d graph the function on her calculator and use the built-in solver to get the answer. Moreover, she could get the answer in about one-third the time it took me to solve the problem by hand.
I hate this. Not because I dislike the tool, but because she (and too many students) use the tool to solve the problem without having any real understanding of the underlying math concepts. Take away the calculator and her SAT score would have dropped several hundred points.
While some would say my quarrel with the AP and SAT exams is an issue with standardized tests, not with mathematics or computer science education, I would argue that problems go well beyond those multiple choice exams — that the fault lies in our curricula and our approaches to education. Perhaps I’m too much of an idealist, but shouldn’t our students’ education be at a higher level? Whether it’s math or computer science, shouldn’t we first be teaching our students the conceptual framework and then (and only then) teaching them what buttons to push?
Robb Cutler
CSTA Past President

11 thoughts on “Computer Science Without Programming?

  1. If Mathematics were to be taught like Computer Science is in (most) K-12 classrooms, then we’d end up with curriculum for “Introduction to Integers” and then call it “Differential Calculus” to make it sound more important. It’s just that too few people in the system are catching on to this discrepancy.
    All too often I’ve seen CS classes concentrate on the quirks of a particular language “compare things with ==, or sometimes .equals(); Please don’t ask how Java manages objects in memory.” (to the point of having multiple choice tests about just the syntax); that is kind of how perfect squares are neat examples of integers. Though I guess an average parent understands enough of the latter to demand more from their school board. Maybe.

  2. Robb, I think you’re right: “Too often, we teach programming without computer science.” This has been known to happen at the college level, too!
    What is the “computer science” that’s appropriate at the high school level, and that isn’t programming or learning to use software? I have an analogy I like. All school children in grades K-12 take a course on “Language Arts” (often called English). At every grade level, this course covers specific instances (e.g. The Red Pony, The Raven), which corresponds to software packages and IT; being creative and solving problems with the tools (e.g. essay and short story writing), which corresponds to programming; and the theory behind the field (e.g. meter (iambic pentameter), exposition-rising action-climax-falling action-denouement), which corresponds to CS theory. Language Arts courses integrate these three aspects very well, and it’s hard for us to imagine a good Language Arts course with only one or two of the three.
    I suggest we take the same approach in K-12 computer science. Students should be continually learning new software, critically examining software, writing their own software (often as extensions to existing software), learning the principles underlying software. (Same for hardware.) Asking with or without, before or after, I think frames the issue too rigidly. Iterate!
    And so to return to the question I asked above–what is computer science for K-12 students? The answer is: a body of principles, observed regularities, best practices, quasi-mathematical theories, systematic experiments, and clear thinking, all revolving around algorithms, digital information representation, abstraction, human-computer interaction, physical computers, and modeling. Quite a farrago! I think the best education will follow from mixing it at every grade level with programming and the study of existing software and hardware.

  3. In some sense, a lot of this is preaching to the choir, as the expression goes. I think that a lot of well-intentioned teachers are happy just to have a job for another nine months or so, never mind trying to overcome what is a systemic problem (or so this is what I see in Public Schools in Maryland) with this content area that has its origins in several realities:
    1) CS never advocated for itself.
    2) CS never explained what it was or why it was important. The assumption, especially during those “heady” years of the 1980’s was that anyone with half a brain should understand what we’re about and why it’s essential to everyone;
    3) CS was left out of the “core” under No Child Left Behind, which has devastated any hopes you, me, or anyone might have of actually teaching as opposed to testing;
    4) The economic downturn of 2000/2001 (the so-called Internet bubble) burst and,at the same time,
    5) The popular press began to publish stories of outsourcing, scaring an already traumatized population into a frenzy.
    Given this confluence of factors it’s a wonder that we haven’t been imprisoned, never mind left alone to teach.
    Now, if there’s any “good news” it’s perhaps dawning on a new generation that they have been hoodwinked and essentially denied the opportunity to explore a content area that is relevant to just about every aspect of their lives now and for the foreseeable future. I doubt that they (Washington) will ever mandate that CS be a requirement for HS graduation because they haven’t trained the necessary faculty, nor have they educated the public or Administration—America is not even a starter here. I’m afraid that the emerging economic superpower have caught us flat on our heels (or worse), thanks to some of the factors that I outlined above, and thanks to our own complacency.
    Teach theoretical concepts of computer science? Sure. But, first you’ll have to teach them basic set theory, then some discrete mathematics, oh, and logic and perhaps some abstract algebra along the way (fun things, by the way, no longer taught in HS).
    Now, don’t get me wrong. I have about 12 students this year who have come to me asking why I don’t teach just such a course next year; so that they might take this course as Seniors. I certainly intend to voice their requests—maybe this week during the Instructional Council.
    Any bets that their and my requests will have any impact on the Administration?
    In closing, let us know how it works for ya!
    Cheers,
    Tom Reinhardt

  4. Hi Robb….
    I was searching on Google for information on how to become a computer science teacher in Maryland when I located this blog.
    I am an IT consultant and wish to change careers to become a teacher. What type of certification is needed to teach computer science for the elementary level? I do have a master degree in Economics and over 10 years as the president of my own IT firm…I just need some guidance.
    Thank you – Ida

  5. Hi Ida,
    If you are a CSTA member, you can get access to the certification requirements for most states on the CSTA website (csta.acm.org). If you are not a CSTA member, it is really easy and free to join. Just go to the website and follow the instructions in the Become a Member box,
    Chris

  6. I think programming should be taught in K-12 because today, we are on the boom of computer technology. It is better for the students to know the basics of programming so that in the future, they could make a technology which would bring easier life for us. Plus it is an advantage for K-12 to learn more about computer science. I think it should be taught from grade school to high school but a basic only for the grade school.

  7. As with anything, it is important to understand the underlying concepts. However, it is important to embrace technology and acknowledge that things like graphics calculators and computer programs can make tasks much simpler and quicker to achieve.

  8. Computer Science can’t be taught without programming, just like paining or sculpturing can’t be taught without learning art history- sure it CAN be taught without, but students need to have a deeper, technical understanding of what they are studying in order to create and engineer new works.

  9. A degree in computer science can be earned through two ways. First is the traditional way and the second is the information technology way. There are a number of universities using information technology in teaching students different courses such as Bachelor of Business Administration (BBA), Medical, Accounts, Commerce, Master of Business Administration (MBA) and Ph.D. These universities differ from their traditional counterparts in their fees structure, college courses offered, method of teaching and stipulated time period for pursuing a college course. Today science students prefer to earn online computer science degrees from accredited schools. It makes them eligible for global jobs such as Software Engineer. Schools for Computer science courses in Manila

  10. I’ve been programming for 12 years now and I remember back in college in a “programming class”, more than half the class simply could not do the work required. Programming is one of those things that you really need a certain type of brain or perhaps level of intellegence to be able to do.

Leave a Reply