Gas station without pumps

2011 April 29

K–12 Computer Science standards

Filed under: Uncategorized — gasstationwithoutpumps @ 20:45

The Computer Science Teachers Association invites us to comment on the New CS Curriculum Standards (Draft for Public Comment), which is a draft of computer science education standards for K–12. I was hoping to find a clear, well-reasoned document that clearly set out what children should be learning about computer science—something I could point teachers and administrators to and say “that’s what you should be doing.”  I also wanted something that parents could read and see whether or not their children were learning the right stuff.

I was disappointed.

The draft is 68 pages long, and the people who wrote obviously don’t know how to use computers, since the Table of Contents has “?” for all the page numbers.  That made me immediately doubt the care they had put into preparing this draft, since even the crudest of word-processing programs is capable of getting that right. What were they thinking, to put such sloppy work out for comment?

They divide their recommendations like Gaul into 3 parts: K–6, 6–9, and 9–12, with the 9–12 level further subdivided into three courses.They also split their recommendations into 5 strands: computational thinking; collaboration; computing practice; computers and communication devices; and community, global and ethical impacts. [page 14]

The lowest level can be summarized as “use technology and have fun”. Not much harm there but not much content either. Actually, the Computational Thinking standards for 3–6 are not bad, other than these two

  • Participate in a simulation to act out the solution to a local issue.
  • Understand the connections between other fields and computer science. [page 18]

Participating in a simulation around a local issue has nothing to do with computer science.  It may be a fine pedagogic technique, but it is not a standard.  Understanding the connections between other fields and computer science is asking a lot of 6th graders, since even most computer science professionals will be hard pressed to come up with more than a few trivial ones.

The second level seems to stress “community-relevant issues”, which seems to me to be more a matter of how teachers motivate the learning than a proper standard for a computer science standards document.This is a recurring problem throughout the document: the authors seem to be throwing many different (and perhaps incompatible) “desirable things” into the document, paying no attention to whether the things are computer science standards, pedagogic techniques, social engineering, or examples.  A standards document should provide lists of facts or skills that students should learn, and it should be straightforward to verify that the facts or skills have been learned.  It should not dictate teaching or learning styles.  Examples should only be provided to clarify the meaning of standards, not offered as standards themselves.

The third level has 3 courses: 3A for everyone, 3B the Computer Science Principles course, and 3C topics in computer science (for which the AP computer science course is offered as a possible model).  The notion of lower-level entry to computer science than the current mainly-Java-syntax AP course is good, but the standards are again not well thought out.  Why does everyone have to be able to convert binary, decimal, octal, and hexadecimal?  That is a useful skill for a computer engineer who has to pack and unpack bits to communicate with hardware, but who else really needs it? And this is a skill to be required of all students???

Things like “Describe the concept of synchronization as a strategy to solve large problems”  [page 23] really irk me—synchronization is an important concept in parallel processing and hardware design, but it is not “a strategy to solve large problems,” nor would a student describing it as such give me any confidence in their ability to use apply the concept when it is important.  Perhaps the authors meant parallel processing, rather than synchronization?

Similarly,  “Describe how computation shares features with art and music by translating human intention into an artifact” [page 23] does not deserve mention as “computational thinking” and is certainly not the same class of concept as “Use modeling and simulation to represent and understand natural phenomena,” [page 23] which is one of their better standards.

I also object to their reduction of computer science to just large programing projects.  I don’t believe that it is true that “Significant progress is rarely made in computer science by one person working alone.” [page 15]  Many of the great breakthroughs in computer science came from one person’s insight.  It is true that large programming projects now often involve big teams, but a lot of very important software including most programming languages in use today started as a one-person effort, not as a huge team.  I’ve moaned on this blog before about the overuse and misuse of group work in K–12 education, and it saddens me to see pedagogical styles enshrined as curricular standards.  This is not just an accidental intrusion of pedagogic style into the standards—the authors feel strongly about the matter, referring to

other unfortunate perceptions of computer science as a solitary pursuit, disconnected from the rest of the world and of little relevance to the interests and concerns of students.

We address these concerns by distinguishing five complementary and essential strands throughout all three levels in these standards. These strands are: computational thinking; collaboration; computing practice; computers and communication devices; and community, global and ethical impacts. These strands not only demonstrate the richness of computer science but also help organize the subject matter for students so that they can begin to perceive of computer science as more engaging, relevant, and more than a solitary pursuit. [page 14]

Very social people will undoubtedly applaud this change—there is a meme in education nowadays that treats introversion as if it were perversion, and solitary pursuits as not just different, but evil.  This sort of prejudice, common as it is, does not belong in a standards document.

I even have trouble with the definition of “computational thinking” that they adopt (borrowing in turn from Barr and Stephenson:

“CT is an approach to solving problems in a way that can be implemented with a computer. Students become not merely tool users but tool builders. They use a set of concepts, such as abstraction, recursion, and iteration, to process and analyze data, and to create real and virtual artifacts. CT is a problem solving methodology that can be automated and transferred and applied across subjects. The power of computational thinking is that it applies to every other type of reasoning. It enables all kinds of things to get done: quantum physics, advanced biology, human-computer systems, development of useful computational tools.” [page 15]

The first part of this is excellent, and if they’d stopped after “artifacts” I would have been happy with the definition, but “thinking” is not a “methodology” nor can thinking be easily automated.  They ruin their good beginning by wandering off into fuzzy statements and irrelevant examples (quantum physics may need computational thinking, but it is hardly going to inspire legions of students to want to do that thinking).

The inclusion of ethics and responsible use and dissemination of information is a good subject for schools.  Their discussion on this strand seems eminently reasonable, though likely to get perverted into arbitrary, authoritarian rules when actually implemented at many schools.  Of course, good standards in other fields often get badly implemented, so I can’t fault them for that.  The ethics and social impact standards seem the best thought-out of the ones in the document.

Their “Computing Practice” strand seems weak.  Detailed career guidance defining the currently fashionable buzzwords used by human resources departments does not seem to me to be a core standard.

K–12 students must also be introduced to the variety of careers that exist in computing, from IT Specialist to Systems Analyst, Programmer, CIO, Computer Engineer, Software Engineer, and so forth. By the time they reach high school and are selecting career or educational paths, students should be well informed about their options to make intelligent decisions. [page 16]

I doubt that one in 10 of those currently employed in the computer industry could make consistent distinctions between the job titles, many of which have mutated in different companies as some titles got arbitrarily compensated differently from others.  What about other titles I’ve seen like “happiness engineer” (used by Automattic) or “genius” (used by Apple)?

I’m also not convinced that the skills listed in the computing practice strand are enduring durable skills:

Computing practice at the K–12 level must therefore include the ability to create and organize Web pages, explore the use of programming in solving problems, select appropriate file and database formats for a particular computational problem, and use appropriate Application Program Interfaces (APIs), software tools, and libraries to help solve algorithmic and computational problems. [page 16]

The particular skills listed here, while undoubtedly useful skills, seem arbitrarily chosen from among a much larger set of skills.  (Why web pages and not PDF documents or blogs? Why APIs and not other interfaces?)  The core concept, exploring the use of programming in solving problems, is very important, but burying it in a list of much more minor concepts seems wrong.

Some of the detailed standards seem to me inappropriate (all the collaboration standards, for example) or not appropriate for the age groups, like expecting all 3–6 graders to use cell phones to access remote information, or to identify different computing careers, or “be able to evaluate the accuracy, relevance, appropriateness, comprehensiveness, and biases that occur in electronic information sources.”  [page 19] Certainly they should be taught about those things, but few college-educated adults are capable of doing what the standards call for 3rd graders to do.

The report itself is full of educator jargon: “The learning experiences created from these standards should be relevant to the students and should promote their perceptions of themselves as proactive and empowered problem solvers.” [page 13]

A standards document is not the place for random musing about how you would teach (a blog is a fine place for such rambling).  A standards document should focus only on what must be taught (or, more properly, what must be learned). Lists should be properly parallel, not mixing tiny examples (like converting octal numbers) with major concepts (like modeling and simulation).

Quite frankly, if a student had turned in this draft of a standards document, I’d cover it with markup for about a third of the document, then get so irritated that I’d send it back to them telling them to cut out the bullshit and turn in a document a fifth the size.  I’m depressed that this is what passes for professional thinking by computer science educators.  It reads like it was written by a committee (9 authors, no wonder!), where any random thought was included and no one individual was willing to take the responsibility to cut out the gratuitous examples and off-topic points and make sure that the writing was clean and to the point.

Perhaps it is just as well that these people were writing computer-science education standards, since there is essentially zero chance that such standards will ever be adopted, so the damage they can cause with the crappy thinking and writing is limited.  Of course, it is possible that they could have done much better, but didn’t want to waste the effort on a document that was destined to be filed and forgotten.

If you have a strong stomach, it might be worth your time to send them detailed critiques, but I have already spent far too much of my life correcting low-quality student writing, and I don’t have the patience or altruism needed to do it for free.


  1. I’d be tempted to file this under “garden-variety sloppy thinking in educational policy” (it’s a large file) except for one thing. “Collaboration,” connecting to “art and music,” and “helping people” (solving a “local issue”) sound suspiciously like the oversimplified hand-washing that passes for involving girls in STEM. Maybe you’ve seen the promotions (“more girls in your AP classes — in only 6 weeks!”) that sound like weight-loss programs. Obviously teamwork and helping people are good, and can easily be accommodated in any subject area, but muddled thinking, unmeasurable standards, and watered-down content are going to increase alienation, not decrease it. Perhaps a group of students could collaborate on creating an artifact of computational thinking that sorts these items accurately into the 3 or 4 documents that they, perhaps, should have belonged to.

    Comment by Mylene — 2011 April 29 @ 23:58 | Reply

    • I doubt that the concepts can be sorted computationally. What is needed here is not computation, but thinking. It would probably be done better as the “solitary pursuit” that they abhor, sine the committee effort clearly failed.

      Comment by gasstationwithoutpumps — 2011 April 30 @ 07:21 | Reply

  2. Seems to me that you should at least send them a link to this post, as you have already spent some time on the topic.

    I think part of the problem is that “what is a standard, what is a (customer, system, design, etc) specification, what is implementation specific?” is never taught, not in schools (K-12 or tertiary, that I know of). This is something I learned on the job, at a company that had to deal with FDA regulations, working with military subcontractors. I don’t know the background of the people who assembled this document, but there is no reason to believe that they all understand what a standard is and is not.

    Comment by kmorrell — 2011 April 30 @ 04:40 | Reply

  3. I mostly agree with your analysis, except for your objections to collaborative work. I have worked as a software engineer in industry. Everything is collaborative in that world. My company wouldn’t even hire people fresh out of CS programs because they didn’t know how to work in groups in an effective manner. Lack of collaborative skills is really one of the biggest complaints that employers have of CS graduates.

    The rest of your analysis is spot on though. I am very much turning away from the whole computational thinking fad. No one knows what it means. I have become convinced that it is a buzzword only. I am going back to my old belief that computer science is a design field, like every other engineering discipline. We need to teach design strategies, not murky “computational” skills. We need to go back to the literature in engineering education, where people focus on design skills.

    Comment by BKM — 2011 April 30 @ 12:43 | Reply

    • I have taught as an engineering professor for 29 years now, and have supervised a lot of group projects. I agree that engineers and programmers need to learn how to work effectively in groups, and that they have to be taught how to do so. (We have explicit instruction on group formation and maintenance in the first quarter of our senior-level design project course, and I have co-taught that class.)

      My objection is not to professionals working in groups or even to teaching people how to work in groups. My objection is to the assumption that forcing people into groups when it is not appropriate for the task is somehow going to help them learn how to work in groups. My experience is just the opposite—that students who have been through these fake-group projects have a harder time learning how to function in a real team.

      I would rather have the K–12 teachers not attempt to teach students to work in groups than have them do so much damage that it takes a decade for the kids to unlearn their aversion to group work.

      See my post on group work for more of my thoughts on when group work is appropriate and how schools can teach it.

      Comment by gasstationwithoutpumps — 2011 April 30 @ 12:53 | Reply

      • Yes, group collaboration skills need to be actually taught, not just assumed. Again, I think we computer scientists need to look to the extensive literature from the engineering field on teaching collaborative design. I am in the midst of doing a literature study for a project in this area. When I searched the “standard suspects” in CS education (the various SIGCSE conferences, CCSC conferences, ACM in general) I realized how little cross-fertilization is going on. With the exception of software engineering education, which spans both worlds, it is almost as if engineering education and CS education are on separate planets.

        And I am also not huge on group projects in K12, because the teachers don’t know how to effectively supervise them. However, it would be NICE to see students come into the university level with some inkling of how to ask each other questions, or accomplish some small task together. I teach software engineering, with its requisite group project, and am amazed every semester at the lack of basic social skills among the students.

        Comment by BKM — 2011 May 1 @ 07:25 | Reply

        • I agree that it would be good for kids to learn to work together, but the usual “group work” exercises in K–12 and even college classes does not help. When a project is more easily done by the best person in the group than by the group as a whole, then the exercise is strongly counterproductive.

          I recommend that students participate in truly collaborative efforts (like theater, orchestra, and some sports) to learn how to work effectively in a group. Of course, too much teacher intervention in group formation and managing the group can get the task done without the students learning how to deal with a group of peers (having many students interacting with one teacher is very different from having them interact with each other).

          I don’t think it likely (or even age-appropriate) to give K–12 students such large CS projects that groups would be more effective than the best student in the group working alone, so I don’t believe that “collaboration” should be a standard for K–12 computer science.

          Comment by gasstationwithoutpumps — 2011 May 1 @ 07:32 | Reply

  4. There was a blog post today about a “Computer Science Fair” in Philadelphia that points out the dangers of letting people who know nothing about computer science select the curriculum:

    Comment by gasstationwithoutpumps — 2011 May 4 @ 15:47 | Reply

  5. When I got the email announcing this document I got all excited. So much for excitement. As I am reading through the document I thought to myself “Where’s the beef?” Where are the teachers coming from that know what all this is about? Heck, I am not sure what some of it is about! These standards look like they were written to impress somebody, not to help a school or a classroom teacher design a curriculum.

    Comment by Garth — 2011 May 5 @ 13:05 | Reply

    • I wouldn’t fault a standards document for not being a curriculum. Indeed part of the problem here is that they tried to mix curriculum design into the standards, with the result being neither a curriculum nor a standards document. Not defining their terms in a way that allows teachers to determine wheter the standards are met by a particular curriculum is a problem, though.

      Comment by gasstationwithoutpumps — 2011 May 5 @ 14:32 | Reply

  6. While your blog piece contains some good suggestions about individual standards (and I suspect this is why the organization released the draft in the first place) some of what you say seems uninformed by what is happening in CS education and in some places just picky to the point of mean-spiritedness. First, you do not seem to realize that standards documents have a very specific target. They are written primarily for administrators. One commenter pointed out that this document addresses some issues which seem more appropriate for a curriculum document and I agree. My guess is that the reason this document looks as it does is because most administrators do not even know what computer science is and frequently conflate it with educational technology. Second, I teach in more than one discipline and so I know what standards look like and these are better than most. Third, to suggest that the people working on this document do not know anything about computer science education is sheer ignorance. And to suggest that the standards would never be used is likewise unfounded. I have been using CSTA’s standards (published as the ACM Model Curriculum) for years and I know my state standards were build on them as well. And to complain about the lack of page numbers? Come on! This is a draft, not a released document. Maybe they did not include the page numbers because they are really going to listen to the feedback and make changes. What a concept! Finally, CSTA is the only organization actually doing anything to support us CS teachers in the field.

    Comment by RyGuy — 2011 June 20 @ 12:54 | Reply

    • “uninformed by what is happening in CS education” Perhaps. I only know what is happening at my university and what I see on blogs (like Mark Guzdial’s).

      “picky to the point of mean-spiritedness” Yeah, I’m a picky person, and the standards were badly enough written to irritate me.

      “standards documents … are written primarily for administrators.” I see what you mean. Administrators write and read so much bullshit that quality control doesn’t matter. A standards document should be written for those who need to implement the standard (and those who need to check that it has been implemented correctly). In this case, that would be the teachers.

      “most administrators do not even know what computer science is and frequently conflate it with educational technology.” Probably true, and the document could have done a much better job of clarifying that confusion, if that was one of their goals.

      ” I know what standards look like and these are better than most.” Sad, isn’t it, that the standard for standards is so low.

      “to suggest that the people working on this document do not know anything about computer science education is sheer ignorance. ” Admitted, it is ignorance. I’ve never heard of any of the people.

      “to suggest that the standards would never be used is likewise unfounded.” I’m a pessimist, and I am occasionally pleasantly surprised when things work out better than I expect. But this is a K–12 standard, not a college standard, so I’m not sure that the ACM Model Curriculum has any predictive value. It has not had much effect on K–12 computer education, except indirectly through the AP computer science exam (which a small and shrinking number of students take).

      “to complain about the lack of page numbers? Come on! This is a draft, not a released document. ” If you want people to send you changes, it is really helpful to provide them with page numbers, so that they don’t have to copy the whole document to tell you where a change is needed. Page numbers are thus arguably more important on a draft than on a final document.

      “Maybe they did not include the page numbers because they are really going to listen to the feedback and make changes.” This is typewriter thinking. Computers can automatically update page numbers when you make a change. There has not been any reason to delay adding page numbers for at least 20 years. What it most likely means is that someone did not know enough about their tools to change the default settings in Word. I do not accept such sloppy work from my students, and I see no reason to accept it from “professionals”.

      “CSTA is the only organization actually doing anything to support us CS teachers in the field.” could you be more explicit about what CSTA is doing to support teachers (other than this standards document, which we clearly disagree about)?

      Comment by gasstationwithoutpumps — 2011 June 20 @ 13:44 | 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: Logo

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

Google photo

You are commenting using your Google 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 )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: