Require CS at Universities before K-12: Building a computational community for everyone

November 30, 2015 at 8:10 am 23 comments

The argument made in Wired is an interesting one, and I partially buy it.  Are high school and elementary schools the right places to teach programming to everyone?  Does everyone at that level need to learn to program?  What are we giving up by teaching coding? Here’s one possible scenario, a negative one but a likely one:  We push CS into K-12 schools, but we can’t get everywhere.  The rich schools are getting it first, so we run out of money so that we get to all rich schools and no poor schools.  Computing education is now making larger the difference between the rich and the poor.

So is it wrong to teach a person to code? No. I don’t deny that coding is a useful skill to have in a modern ubiquitous computing society. It can help people personalize and understand the devices and services they use on a daily basis. It’s also good news that methods for teaching kids how to code are improving and becoming more effective, or that kids can ostensibly learn on their own when left to their own devices. The problem is elevating coding to the level of a required or necessary ability. I believe that is a recipe for further technologically induced stratification. Before jumping on the everybody-must-code bandwagon, we have to look at the larger, societal effects — or else risk running headlong into an even wider inequality gap. For instance, the burden of adding coding to curricula ignores the fact that the English literacy rate in America is still abysmal: 45 million U.S. adults are “functionally illiterate” and “read below a 5th grade level,” according to data gathered by the Literacy Project Foundation. Almost half of all Americans read “so poorly that they are unable to perform simple tasks such as reading prescription drug labels.” The reading proficiency of Americans is much lower than most other developed countries, and it’s declining.

Source: Pushing People to Code Will Widen the Gap Between Rich and Poor | WIRED

Computational literacy is important, and school age is where to develop it. Programming can be a useful medium for learning the rest of STEM, so learning programming early can support later learning.

Eventually. That is the desired end-state.

We should focus on universal computing education in higher-ed before putting CS into K-12 classrooms: The problem is that we’re nowhere near that goal now.  Less than 10% of NYC schools offer any kind of computer science, and less than 10% of US high schools offer AP CS.  I argue that we should require computer science in colleges and universities in the US first, and then in K-12 classrooms, so that the teacher come out of undergraduate already knowing how to program and use it in their classes.  I worry that if we can’t make required computer science happen in higher ed, the costs for getting it into all of K-12 are too large — so only the rich will get it. I worry also about the kinds of arguments we make.  If we can’t make universal computational literacy happen in higher ed, what right do we have to force it on all the high schools and elementary schools?  “This isn’t good for us, but it’s good for you”?

The biggest challenge in growing computing education in K-12 is finding enough teachers.  Programs like TEALS are stop-gap measures.  We need to recruit teachers to meet the needs in NYC.  Most professional development programs are under-subscribed — there are lots of empty seats.  How do we convince teachers to go take extra classes in computing, especially if they’re already an established teacher in some other discipline?  If we taught everyone computing in undergraduate, we’d teach all the pre-service teachers.  We wouldn’t have to do extra in-service professional development.  (Pre-service education is much less expensive to implement than in-service.  In-service teachers get paid to attend workshops. Pre-service is funded by tuition.)

We absolutely should be doing research on how to put computing into K-12 schools. I am concerned about the costs of large scale implementation before we know what we’re doing — both in terms of making it work, and in what happens when it doesn’t.

Literacy starts with community: Situated learning is a theory which explains why people learn.  Students learn to join a community of practice.  They want to be like people that they admire, to adopt their values and practices.  Think about computing education from a situated learning perspective. Let’s imagine that reading has just been invented.  It’s a powerful literacy, and it would be great to teach it to young kids so that they can use it for their whole lives and all their years of schooling.  But if we try to teach it to them before many adults are reading and writing, it comes off as inauthentic.  You can imagine a child thinking, “Why should I learn to read?  The only people who read are monks and professors. I don’t want to be like that.”  If few people read, then few people write.  There’s not even much for the children to read.

I suspect that textual literacy was first learned by adults before it became a school subject.  Adults learned to read and write.  They wrote books and newspapers, and used reading in their daily lives.  Eventually, it became obvious that children should be taught to read.

Today, children don’t see a world of computational literacy.  Children don’t see many adults writing bits of code to do something useful or something beautiful or something enlightening.  You can imagine a child thinking, “Why should I learn to program?  The only people who program are geeky software developers and professors. I don’t want to be like that.  And even if I did want to be like them, the geeky software developers don’t use Scratch or Blockly or App Inventor.” Students today are not immersed in a world of code to explore and learn from. Most programs that are available to study are applications. Studying existing programs today is like learning to read only with legal documents or the Gutenberg Bible. Where are the McGuffy Readers of code, or the Dr Seuss of imaginative programs?  Those would be expected produces from a computationally literate society.  A generation of college-educated programming professionals would help to create that society.

If you want students to gain literacy, place them in a community that is literate.  That’s what Seymour Papert was talking about when he described Logo as a Mathland. We need a community of adults who program if we want children to grow up seeing programming as something natural, useful, and desirable.

The importance of getting it right: I was recently at a meeting for establishing a Framework for K-12 Computer Science Education, and Michael Lach spoke (see a description of him here). He warned curriculum writers and state/district leaders to go slow, to get it right.  He pointed out that if we get it wrong, administrators and principals will decide that “Computing can’t be taught to everyone. It really is just for the geeky white boys.”  And we’ll lose decades towards making computing education available to everyone.  (Lach’s talk was deep and insightful — I’ll say more about it in a future blog post.)  We have to get it right, and it’s better to go slow than to create computing education just for the rich.

Entry filed under: Uncategorized. Tags: , , , .

How many schools will honor the AP CSP attestation? A Call for Corporate Action to Meet Labor Needs and Diversify Computing

23 Comments Add your own

  • 1. Raul Miller  |  November 30, 2015 at 12:25 pm

    Something odd here…

    A significant chunk of the population uses computers. If you look at market figures, a lot of computers are being sold, and a lot of people own and use them – this isn’t some niche industry (or, …. maybe it really is and we are deceiving ourselves?). Kids are growing up with them nowadays.

    And yet “The biggest challenge in growing computing education in K-12 is finding enough teachers.”

    How does this even make sense?

    So here’s a hypothesis – the situation as it currently exists is a failure of our educational system. We’ve been teaching people not how to think, but how to not think. And, we’re reaping what we have sown…

    My favorite illustration of this is the “efficient market hypothesis” taught in microeconomics classes – this hypothesis has guided policy and strongly influenced the structure of society. But it’s firmly grounded in a mathematical fallacy, and as a result has led us in a direction which will take a tremendous amount of work to recover from.

    So what’s the solution?

    The one I’m trying to work on is acknowledging that there’s a lot of things wrong – with my education, and my choices. I’m not sure I’ll get any further than that. But this sort of problem pervades our industries, also. (And, honestly? It has guided our industry to the point where mistakes are being left in place and even encouraged, because those mistakes hide social ills that no one knows how to deal with.)

    Still… we want to solve this? Presumably, education professionals (both the teachers and the business people) should be looking at what they are expert at, and finding the flaws in their own backgrounds. But how do we do that?

    Maybe we just need to dwell on our mistakes more? I honestly do not have a clue.

    • 2. Mark Guzdial  |  November 30, 2015 at 12:30 pm

      There’s a simpler explanation: Computing knowledge is so valuable the economic rewards are enormous for using it in industry rather than teaching it to others. Few people who have enough knowledge to be a successful computing teacher are willing to forego the economic benefits of being a successful computing professional in industry.

      One solution is to pay computing teachers what they’re worth on the market for computing professionals.

      Another one is to make knowledge of computing universal amongst undergraduates. That’s the one I’m proposing in this post.

      • 3. Raul Miller  |  November 30, 2015 at 1:59 pm

        Mmm…. maybe.

        But I’m on the other side of this divide. I’ve been working in the industry for decades. And, as a result, I am not entirely computationally illiterate. Nor am I entirely unaware of how things have been going.

        But, also, I come from a family with a strong educational bias – with most of my family being professional educators of some sort.

        And, for that matter, I have had some teaching experience myself, over the years. Nothing all that major or significant, but enough that I’ve seen some of the more obvious issues.

        Still, I have been reluctant to switch career tracks. And it’s not because of the salary – I don’t need the salary – but because of people issues. And, maybe I am just too lazy (or dedicated, or focused or – pick your favorite abstraction, here…) to actually switch tracks. Or maybe I just no longer feel that a computing education really benefits society – because that’s certainly what it looks like most other people have been thinking.

        Of course, there’s a lot of nuances to that. But, from my point of view, “economics” is just a fig leaf over deeper issues with our societies. (It’s not so much that we have been making mistakes, but that we have problems learning from our mistakes.)

        My impression is that nobody really wants to be bothered all that much. I think we all (including myself) mostly want to just keep doing what we have been doing and we want to just keep living the way we have been living.

        And maybe that’s a good thing.

        But I think that’s also the root of the issue you are talking about, here.

        It’s not that no one cares, but rather that we all care so much about other things.

  • 4. David Klappholz  |  November 30, 2015 at 12:28 pm

    The difference, in general, between education in poor neighborhoods and education is affluent neighborhoods is definitely a serious one, and desperately needs to be dealt with. But, that’s a separate issue from whether or not to teach CS in K-12 in neighborhoods where it can be taught. In fact, a much lower percentage of students from poor neighborhoods than from affluent neighborhoods get a higher education. Bottom line: While I agree that CS for everyone in higher education best serves the problem of producing K-12 CS teachers, I don’t see why teaching some K-12 students CS isn’t better than teaching no K-12 students CS.

    • 5. Mark Guzdial  |  November 30, 2015 at 1:05 pm

      I wrote this post weeks ago, David, around the same time as I wrote the MOOC post from last week ( The MOOC post I wrote because I felt like we were lied to. The MOOC proponents said that they were trying to democratize education and make education more accessible in the developing world. My own university administrators said that they thought that OMS would draw more women into CS. Neither of those things have come to pass. The commenters on that post point out that it was unreasonable to think otherwise. MOOCs are valuable, even if they mostly just enrich the rich.

      There’s a similar story going on in this post. For over a dozen years, I’ve been working in CS Ed to increase accessibility and to broaden participation in computing education. And it’s not really happening. Instead, we’re doubling-down on investment in computing education to the richer schools, and the poorer schools are getting left out. In this post, I’m pointing a way to avoid that problem — get it into higher-ed. But higher-ed is resistant (to providing computing for all, to supporting AP CSP), and as you say, it’s a net gain to have *some* computing education in rich schools, even if the poor schools don’t get it, even if we’re not broadening participation, even if we’re not getting more diverse. It’s just not what I’ve been working toward.

      ‘Tis the season.

  • 6. gasstationwithoutpumps  |  November 30, 2015 at 1:07 pm

    I think that the statement “(Pre-service education is much less expensive to implement than in-service. In-service teachers get paid to attend workshops. Pre-service is funded by tuition.)” is not well supported. The cost of pre-service and in-service teaching is not very different—same room costs, same equipment costs, same instructor costs. There may be some efficiencies of scale if you can make pre-service classes much larger than in-service ones.

    There isn’t even much difference in who pays the cost (usually the student in both cases), though there are different subsidies for pre-service education (financial aid for students) and for in-service teachers (school district funding). From what I’ve seen on teacher blogs, few teachers are getting paid to do in-service learning—if your model for developing new CS teachers relies on that, then you’ll never get enough to matter.

    • 7. Mark Guzdial  |  November 30, 2015 at 1:10 pm

      In most CS in-service teacher professional development, teachers are paid stipends, e.g., In most cases, these are paid by NSF or Rarely is it being paid by the school district, at least in CS.

      • 8. gasstationwithoutpumps  |  November 30, 2015 at 1:23 pm

        That may be why there is so little CS in-service training going on. If there is no market for the courses that drives school districts or teachers to fund the in-service training, then only the tiny numbers of demo projects that are funded by NSF or similar agencies will exist. And they’ll disappear seconds after the grant funding dries up.

        • 9. Mark Guzdial  |  November 30, 2015 at 1:25 pm

          But they are under-subscribed. I don’t know of any CS Ed teacher PD that has filled up. We lack people, not programs.

  • 10. Grant Smith  |  December 1, 2015 at 3:58 pm

    I know this is a small example, but the first elementary school district to implement required coding classes for all students at every grade level (K-8 district) is made up of all Title I schools where 71% receive free/reduced lunch and 72% are minorities. I headed the initiative (now I’m replicating the implementation at another district) and I had $0 budget to work with. Addressing a major concern from the Wired magazine: what we replaced to find time for coding classes were the technology special area courses. While I agree that, in most cases, the wealthier districts will be the first to adopt required CS classes, not all hope is lost.

    Also, I agree that pre-service training in CS education would be great. Since that’s not available right now, I train veteran teachers CS content knowledge and pedagogy for K-8 classes. I’ve also worked with an arts center that hired programmers to teach after-school coding classes. It was much more difficult to train the programmers than educators to effectively teach CS. I think it’s flawed logic to assume that we don’t have more CS teachers because they could get paid more in industry. Here’s a parallel example: my wife is a medical scientist. She was paid almost twice as much as me when I was still a classroom teacher. Yet, even though scientists could make more in industry, we still have science teachers. In fact, one reason my wife became a medical scientist was so she wouldn’t have to interact with people (like teachers do). One thing many people don’t understand is that educators choose to be teachers and THEN they choose their subject area.

    • 11. Mark Guzdial  |  December 1, 2015 at 4:39 pm

      I would have thought that the first school district to have required programming in all schools would have been St Paul with Gerry Kozberg ( or Newark with Gary Stager, both in the 1980’s. The tension between work as a computing professional versus being a computer teacher is described in Lijun Ni’s dissertation where she studied the development of CS teacher identity, involving over a dozen teachers across a year (

      • 12. Grant Smith  |  December 1, 2015 at 5:30 pm

        Thanks for the response
        Respectfully, I don’t know if implementations from 30 years ago are applicable here, especially if the program dissolved before the turn of the century. That’s my fault, I should have specified with the additional qualifier of “modern implementation” of coding classes.

        I’ll have to read through Lijun Ni’s dissertation on high school CS teachers. I’m geared more towards elementary education. If you know of any K-8 CS Teacher identity research, I’d love to learn more.

  • 13. gflint  |  December 5, 2015 at 4:52 pm

    Requiring CS at the university level would require instructors. From were? Even at the university level there is a huge shortage of intro course instructors. Many of those they do have at that level do not excel at teaching. It is kind of the chicken or the egg thing here. And we still have to figure out what to teach. Is CS just coding? That seems to be the only thing taught in intro level CS at most universities.

    • 14. Mark Guzdial  |  December 6, 2015 at 5:39 pm

      There’s a lot in that response. Yes, we have a shortage of intro course instructors, but it scales faster than at the high school level. One of our instructors at Georgia Tech can easily teach 900 students/year. We’ve seen programs at many places scale rapidly over the last few years.

      Sure, CS undergraduate instructors don’t excel at teaching. I wish that wasn’t true. But fortunately, students who get admitted to college are better than the average high school student and are more likely to succeed, even with less than excellent teaching.

      I have studied several intro courses at a bunch of universities, and I can’t agree that that coding all that they teach. After the first year, very few CS courses talk about coding at all — it’s expected that students will be able to use coding to learn about design, engineering, graphics, networking, algorithms, and all the other ideas that make up a CS undergraduate.

  • 15. Bonnie  |  December 7, 2015 at 7:49 pm

    One instructor + an army of TAs or other support staff can teach 900 students. Don’t forget the underpaid TA’s in this. The reality is that the students are mainly learning from them, not the official instructor. In any case, it takes a lot of people to effectively teach 900 students

    • 16. gasstationwithoutpumps  |  December 16, 2015 at 2:19 pm

      TAs are underpaid, but they actually cost us more than lecturers, because we have to pay their tuition as well as their salary. It is more cost-effective for us to hire 10 lecturers than 1 lecturer and 9 TAs, assuming that we can find the lecturers. We still hire a fair number of TAs, because of funds that are restricted to that purpose, and because it is a form of financial aid to grad students.

      • 17. Raul Miller  |  December 17, 2015 at 8:39 am

        You seem to be describing more of an accounting trick than anything else:

        Someone is “paying the tuition” for all students to whatever degree already, regardless of whether any are TAs or not. And if the salary of one instructor is less than one student’s tuition+one student’s TA salary (which is quite small, in my experience) then most of the tuition collected from a class holding 900 students is not going towards instruction but to “overhead” (granted, there’s a lot of non-classroom hours involved for every classroom hour, but that’s going to be significantly less than 90:1 – for that matter, probably significantly less than 25:1).

        Anyways, if finances are really being used that inefficiently (and I guess maybe that’s the case – though that would be a long-term structural flaw which is worrying) then it’s probably a good thing that some funds are being restricted to TA salaries.

        That said, I also expect that there’s a lot more going on than just the funding issues. And not all of it good.

        • 18. gasstationwithoutpumps  |  December 17, 2015 at 1:19 pm

          You’re right—the way that instruction is funded at UC is insane—accounting tricks dominate over rational planning.

          For example, for many (but not all) departments, lecturers, even ones with multi-year contracts, are funded only by course buyouts from tenure-track faculty—there is no budgeted money. Because of the difference in pay between the tenure-track faculty and the lecturers, if our tenure-track faculty did not buy out of some of their teaching, we would not be able to teach our curriculum. (The solution, to have some full-time teaching faculty in the budget, is only starting to happen in past couple of years, after decades of inaction by the central administration.)

          At UCSC, we don’t have classes of 900—the largest classes are only 472 (the largest lecture hall on campus). We only have three lecture halls seating over 300, and 13 seating over 100. About half our classes have fewer than 20 students, and under a quarter have over 50. Because of our shortage of large classrooms (all 25 classrooms with over 50 seats are scheduled about 18 months ahead of time) and the relative costs of TAs and instructors, it is often easier and cheaper to offer 2 classes of 40 students than to increase the TAs to handle one course of 80 students.

          It is easy to say that we could be more efficient by teaching larger classes, but that would require the University and the state invest in classrooms, instead of just research lab space. (Note: other UC campuses don’t have a serious a classroom space shortage as UCSC, because their administrators did not accept huge numbers of extra students under the theory that the resources would follow the enrollments—pure wishful thinking.)

          • 19. Raul Miller  |  December 17, 2015 at 2:05 pm

            This is going to sound wrong, but: I strongly suspect that “more efficient by teaching larger classes” is the wrong kind of efficiency.

            Specifically, that’s an economic inefficiency. But economics as traditionally taught has severe mathematical flaws. (In particular the “efficient market hypothesis” is mathematically nonsensical.) And that, in turn, has likely led to severe problems for a number of countries.

            So what I think we are seeing here is pain induced in our educational systems as a consequence of a rather significant problem introduced in our financial systems (and, as a consequence in our political systems) by a flaw perpetuated by our educational systems.

            I wish I had a good answer and a way of alleviating the pain. But I don’t. The best I can offer is quips like “physician, heal thyself”.

            Perhaps also, I can offer the observation that classes where students can test their understanding of what they have learned using practical experiments are going to have a better shot at being self-correcting than lecture-only classes. (But of course, this can be unpleasant for some people.)

            But, also, I don’t think this is the only example of educational institutions getting flak because of the consequences flaws in what educational institutions have been teaching.

            Science! The hard way…

  • […] the application part of computing, and that’s quite plausible.  I call that part computational literacy because that’s the name Andrea diSessa gave to that idea years ago. Much of my book is about […]

  • […] student to learn CS, which is something that we’ve been talking about for decades (as in this blog post and this book I […]

  • […] I have argued previously that we have to move to a pre-service model, where new teachers are prepared to be CS teachers from undergraduate education.  It’s the only way to have a sustainable flow of CS teachers into the education system.  NYC is working on developing per-service programs now, because it’s a necessity for their CS education mandate.  No reform takes root in US schools without being in schools of education. […]

  • […] In 2011, I argued that it makes more sense to require CS at universities before pushing into K-12, because then all pre-service teachers have some CS which makes later PD much easier and cheaper:… and  […]


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 )

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.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 10,185 other subscribers


Recent Posts

Blog Stats

  • 2,060,430 hits
November 2015

CS Teaching Tips

%d bloggers like this: