CACM Also Discusses CS Education?

At the end of page 5, “editor’s letter” by editor-in-chief Moshe Y. Vardi, it says “Copyright held by author.” To help you see why this is funny, I’ll provide a copy of the entire article which you can access via the following link (OK, I’m just kidding about making my own copy; but anyway do you get why I think those words are a little funny considering the content of that article?).

Next, Vint Cerf’s column “ACM and the Professional Programmer” appears on page 7, and in it he considers “whether and how ACM can adapt its activities and offerings to increase the participation of [...] professionals.” Now in this article, he mentions “professionals”, “computer science researchers”, and his “mentors in graduate school”. Well, considering his stated goal, I think he should have also mentioned basic instructors who teach basic (i.e. introductory, i.e. undergraduate) computer science courses. If it’s desirable to influence people, isn’t it generally most productive to “get ‘em while they’re young”? (Once when I was in college, I was lucky to be in a small group addresed by preeminent linguist Noam Chomsky. At one point I asked him what’s the best way to learn a language, and he replied, “First, make sure you’re less than five years old….”) Computer science professionals generally spend several years in college learning basic computer science (beginning programming, data structures, algorithms, etc.) before starting their professional activities. If it’s desirable to inculcate these students with a message such as “ACM membership is a mark of a computing professional”, then wouldn’t it be most effective if this message comes regularly from their instructors — who may be teachers more than researchers, by the way? (A last thought of mine regarding this material is that in this CACM article Vint Cerf says, “In order to reach the very parties whose opinions and interests I would most like to gauge, this column is being published here and in ACM Queue, an online publication devoted to practitioners.” To achieve his goals which he indicates, maybe Vint Cerf should also publish a column in ACM Inroads!

Then, pages 8-9, “Blog @ CACM” is “Why the U.S. Is Not Ready for Mandatory CS Education” by Mark Guzdial. At the end he says, “How can we argue that computer science is more important than all the [other sciences and mathematics] and demands a mandate that the others do not deserve?” I’ll refrain from discussing here whether science and mathematics deserve to be required so our electorate can reason about issues such as health (insurance) and the environment, but I do want to discuss here whether computer science is more important than all the rest and deserves to be required. But to prepare for this discussion, consider another point of Mark’s: “Making [CS education] mandatory will force the majority of schools to invent something they will call ‘computer science,’ but it will look like Photoshop or CAD software instruction because that is all they can do without a CS teacher.” Well then, to start discussing whether CS education should be mandatory, it’s necessary to start by first specifying what is ‘general CS education’. I don’t know the content of California Bill AB 1530, but if it doesn’t include such a specification, then I would agree with Mark about what will probably happen if it passes.

(Caveat regarding this discussion: I am not an expert on K-12 CS education. But of course there are other sources of such, e.g. the entire Computer Science Teachers Association, which has an annual conference.)

There are many books providing an introduction to CS for people in general, e.g. Computer Science Illuminated by Nell Dale & John Lewis and Invitation to Computer Science by G. Michael Schneider & Judith L. Gersting, and regarding specification of what general CS education may be, the latter book for example says the following:

The introductory computer science service course has undergone many changes over the years. In the 1970s and early 1980s, it was usually a course in FORTRAN, BASIC, or Pascal. [Later], a typical [...] version of this course would spend a semester teaching students to use word processors, databases, spreadsheets, presentation software, and electronic mail. [My institution, Grand Valley State University in Michigan, has this.] But most computer science service courses do not teach students the foundations and fundamentals of computer science! We believe quite strongly that students in a computer science service course should receive a solid grounding in the fundamental intellectual concepts of computer science in addition to important uses of computing and information technology. This parallels the introductory course in biology, physics, or geology, where the central underpinnings of the respective fields are introduced. The topics in such a computer science course would not be limited to “fun” applications such as Web page design, social networking, and interactive graphics, but would also cover issues such as algorithms, hardware design, computer organization, system software, language models, theory of computation, and social and ethical issues of computing. An introduction to these core ideas exposes students to the overall richness and beauty of the field, and it allows them to not only use computers and software effectively but to understand and appreciate the basic ideas underlying their creation and implementation.

For further descriptions of what introductory CS education could be, consider the CS Principles effort, as presented at http://www.csprinciples.org. (One of the Comments printed with this article by Mark Guzdial also mentions “CS principles”.)

Though they may not be required, schools provide such introductory courses in biology, physics, and mathematics — e.g. I remember a biology course including &asym;advanced topics such as the Krebs cycle which I took when I was in 10th grade. I believe that if schools can provide introductory courses in other disciplines like that, then they can provide such an introductory course in computer science. Would it be somewhat different if it’s at different levels, such as in 10th grade versus in 5th grade? Of course. E.g. for an example of an algorithm, such a class at a lower level might do Euclid’s original algorithm for calculating greatest common divisors which involves repeatedly comparing two numbers and subtracting the smaller one from the larger one, until zero (or equality) is reached. Can such a lower level do this? Hey, can 5th graders compare two numbers, subtract the smaller one from the larger one, and either stop at zero or repeat? Of course. (My father tells me about volunteering with inner-city children and having them do such an activity, using the book Algorithms and Automatic Computing Machines by Trakhtenbrot.) And is this activity computer science, like a computer program? Well, let’s see: this processing includes sequence, conditional selection of alternatives, and repetition; so, yes! 5th graders can also do binary search, sorting, and so on. Beyond that, general computer science could cover cool history including the Jacquard loom and Moore’s law, artificial intelligence which is interesting, and information security which is relevant to their daily activities using Facebook, text messaging, etc. And again, there are textbooks such as Invitation to Computer Science which present all these topics and include engaging weekly activities to illustrate them.

After that discussion of what general CS education can be, I’ll directly address Mark’s question, “How can we argue that computer science is more important than all the [other sciences and mathematics] and demands a mandate that the others do not deserve?” This is easy: Almost all work and a lot of leisure these days involves use of computers: Buying anything at almost every store involves them. Driving (and navigating) involves them. (Vint Cerf’s article actually reflects how much work involves computer science.) And Facebook, text messaging, etc. depend on them. (The first Comment printed with this article by Mark Guzdial appears to me to be mistaken about whether adults do computing. Just managing one’s privacy settings in Facebook is intricate.) It might be fair to say that use of computers has become a fundamental skill like reading, writing, and arithmetic; so some attention to it in K-12 schools makes perfect sense.

Then, as in the material to which Mark Guzdial is responding, after preparing all people to participate well in society using computers, I believe a K-12 course on general CS education will stimulate a broader (than we see now) spectrum of students to delve further into this field, to do what may be considered traditional computer science (programming etc.)