Gas station without pumps

2014 February 2

CS is not a foreign language

Filed under: Uncategorized — gasstationwithoutpumps @ 07:40
Tags: , ,

The Computer Science Teachers Association recently had a blog post about a recent development in high school CS teaching, Why Counting CS as a Foreign Language Credit is a Bad Idea.

When these policy makers look at schools, they see that computer science is not part of the “common core” of prescribed learning for students. And then they hear that Texas has just passed legislation to enable students to count a computer science course as a foreign language credit and it seems like a great idea.

But all we have to do is to look at Texas to see how this idea could, at the implementation level, turn out to be an unfortunate choice for computer science education. Here are the unintended consequences

  1. If a course counts as a foreign language course, it will be suggested that a new course must be created.
  2. If a new course is created, chances are that it won’t fit well into any of the already existing course pathways for college-prep or CTE.
  3. This new course will be added to the current confusing array of “computing” courses which students and their parents already find difficult to navigate.
  4. There will be pressure brought to ensure that that course focuses somehow on a “language”. For the last ten years we have been trying to help people understand that computer science is more than programming. Programming/coding is to computer science as the multiplication table is to mathematics, a critical tool but certainly not the entire discipline.
  5. If this new course is going to be a “language” course, we have to pick a language (just one). And so the programming language wars begin.

I agree that computer science should count as a math or science credit, not a foreign language credit.  CS and foreign language use different mental skills. For one thing, the “grammar” taught in programming languages is deliberately very much simpler than natural language grammars—so much so that there is little transference between learning on and learning the other.  Also, foreign language courses include a lot of memory work (particularly vocabulary, but also conjugation and declension patterns in many languages), while beginning computer science courses are more about learning how to design and debug—that is, to develop problem-solving skills, not memory skills.

Foreign language instruction is also very important, and replacing it with computer science would not be helpful for the cultural understanding and ease of relations between different countries that is an important reason for teaching foreign languages. Decreasing foreign language to make room for computer science is short-sighted.

The most sensible classification for CS (if it needs to be classified in the narrow categories that guide secondary school administrators) is with math.  The reasons for learning CS are much the same as the reasons for learning algebra, both in terms of the underlying set of mental skills that one hopes would transfer to other fields (but usually don’t) and the usefulness as a base for future study in STEM fields.

I think that the claim “Programming/coding is to computer science as the multiplication table is to mathematics” is a bad analogy.  Closer would be “Programming/coding is to computer science as algebra is to mathematics”.  Programming is a much larger and more complicated skill than multiplication, and it underlies most of the rest of computer science. Multiplication is primarily a memory skill (multiplication tables and a simple algorithm), while programming is primarily a problem-solving skill.

I also agree with the concern that making CS a “foreign language” skill will put even more pressure on high schools to adopt a common programming language.  The College Board AP test has already blessed Java, which I think is a poor choice for a first teaching language (though I know that many computer science professors like it as a first language, for many of the same reasons I dislike it).  I prefer Scratch followed by Python, as I’ve explained before on this blog.

Standardizing the way computer science is taught would be a moderately bad thing, as there is no “one true path” that produces great programmers and computer scientists. I see value in having a variety of different pedagogical approaches to teaching programming (and computer science), as the first few programming languages one learns tends to color the way one things about programs for several years.  I believe that a diversity of different approaches to programming is important to the health of the computer science both as an academic pursuit and as an industry—and different initial programming experiences is as important to that diversity as different people are.


Note: I tried to post a comment on the original post, but I kept getting

Server error!

The server encountered an internal error and was unable to complete your request.

Error message:
Premature end of script headers: mt-comments.cgi

If you think this is a server error, please contact the webmaster.

Error 500

You’d think that the Association for Computing Machinery could keep a blog running, but I guess their disdain for mere “programming” extends to the programmers who set up their website.

About these ads

4 Comments »

  1. Well, I got the same error when trying to post my response, so I figured why not put it here:

    One could make the same case against CS counting as FL but substituting Math for FL. We don’t count Physics as a Math credit, trying to shoehorn CS into Math is basically the same thing.

    Science is a little more open since students study a number of disciplines, often separately so counting CS along with Bio, Chem, Physics would allow it to maintain its identity while also fulfilling a graduation requirement.

    Now, it can easily be argued that our Math and Science requirements are totally out of whack — many math people argue that much of what we teach is a waste of time, but that’s another story.

    The truth is that the real goal should be CS as CS and that CS has equal footing as Math or Science in terms of graduation.

    Comment by Mike Zamansky — 2014 February 2 @ 08:35 | Reply

    • I agree that the artificial segregation of subjects into broad disciplines is not very helpful. For example, I believe that calculus and physics should be co-taught as one subject, rather than artificially separated into “science” and “math”. They are certainly much closer than biology and physics, which are treated by high schools as belonging to the same department.

      The biggest problem I see with classifying CS with math or with science is that most current math and science teachers are completely unprepared to teach CS. I believe that most states have secondary education credentials that are subject-specific (physics, chemistry, …), but some still have a general science certification, and I don’t think that separate math certifications (for algebra, geometry, trigonometry, and calculus) are common—though they probably should be. CS should probably have its own certification, but the current problem is not quality control on the teachers (which is the point of certification), but just getting any CS teachers at all.

      My point in classing CS as math is two-fold: intellectual similarity and that there is less harm done in displacing one math course than in reducing the already tiny amount of science that most high schoolers take.

      Perhaps students would be better served by being required to take 6 (or 7 or 8) science, engineering, or math courses, rather than specific numbers of each discipline. (I left out “technology” deliberately, since that is usually a euphemism for very low-level courses at the high-school level.) I would classify computer science as more of an engineering discipline than either a math or science discipline, but high schools traditionally teach no engineering, so that is not helpful unless high schools change.

      Comment by gasstationwithoutpumps — 2014 February 2 @ 09:21 | Reply

      • In NYS kids have to take 3 years of math and 3 years of science and 1 year of FL. The Science requirement is more rigidly defined — 1 year physical science, 1 year life, 1 year either. Math is a little more free.

        I’d love to see them reform math ed and I would love to see a year of CS replace either a year of math or science but I want to see it replace them as CS.

        Relating to CS under other subject areas — in my school, some of our “tech” teachers, all people who know nothing of CS have tried to take control of the CS classes because of an obscure line in the state licensing requirements for “tech.” Thus far they have failed, but if they were to succeed, it would destroy what is now a terrific program.

        Comment by Mike Zamansky — 2014 February 2 @ 13:10 | Reply

  2. I am also in NYS. We don’t have any real computing in our local schools because of the technology requirement. It takes up the slot that CS might have occupied. From the NYS Dept of Ed website “Technology education is an integral program of study within the New York State mathematics, science, and technology (MST) Learning Standards. Historically, the subject area of technology education evolved from the subject area called industrial arts; as a result of the Futuring Project, a name change occurred in the mid 1980’s to what we now call technology education. “. So you can see that it is very much an industrial arts focus. That isn’t a bad thing, but it isn’t really the same as CS and it takes up space in the curriculum.

    I totally agree that CS should never take a foreign language spot. It is a terrible idea, reinforcing the mistaken idea that computer science is the same thing as learning programming language XYZ. I also do not think it should take a science slot. I don’t understand why we can’t just have a computer science slot.

    In the 8th grade, my kid has to take “DIgital Citizenship”, “Independent Inquiry” (aka “How to surf the web”) and “Global Technology”. Surely one of those could be removed to make way for a course on algorithmic thinking in Scratch or Python?

    Comment by Bonnie — 2014 February 4 @ 10:41 | Reply


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

The Rubric Theme. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.

Join 276 other followers

%d bloggers like this: