Archive for June 25, 2010

Dave Patterson on fixing high school CS education

Dave Patterson kindly visited and commented on the post on Technology plus policy for scale. Heroically, he typed a long response, in raw HTML, in the little comment box. I wanted to make sure the comment didn’t get overlooked, so I’m sharing it here as a guest post.

Let me start by saying I love teaching. My sister got her teaching credential, my nephew is music high school teacher, and my daughter-in-law’s father is a high school teacher and in charge for information technology education for a school district.

My belief that the K-12 CS education problem is practically unsolvable for the next 10-20 years in the US is based on:

  • No room in the high-school curriculum for CS. College bound students want to take AP-everything, so they have very little flexibility in their schedules. The comments at the meeting where that we should just get a statewide requirement passed that mandates teaching of CS. What current topic should we drop? Physics? Biology? Math? English? History? Good luck convincing a state school board or your colleagues on campus that CS is more important for the future of our citizens than these topics. Part of their arguments against CS would be how can you get high quality of teachers for CS that they have demonstrated they can get at scale for their topics.
  • Low pay for new teachers. Once a young person knows enough about CS to be a good teacher of the material, they can dramatically increase their income by taking an IT job. Their love of teaching would have to outweigh their need to support their families. In addition, they will probably receive a layoff notice in their first few years, just in case their are not enough funds, whether or not they are really laid off. This letter has to make one wonder if this is a good long-term career. Fixing this problem is a major societal change in the US, and until its fixed its basically a Catch-22, leaving us with a relatively small number of heroic competent K12 teachers.
  • Changing education policy is hard and takes a long time, and there is little reason to believe you will succeed. This is a state by state, school district by school district level of change involving many advocacy groups. If you think all you need is logical arguments to win the day, look at the resurfacing of alternatives to evolution in the classroom.
  • Most proposed solutions don’t scale. There are roughly 50,000 high schools and 80,000 elementary schools and middle schools in the US. Whatever you are proposing, think about the time scale your innovation would take to affect 10% of these schools. That would mean that 90% students are left out. How long before your proposal would help 50%? 90%?

These points are why I agree with Alan Kay that the most plausible path forward is some kind of online tutor / assistant that could help teach the ideas big ideas about CS.

Basically, for the US we need solutions that leverage Moore’s Law to scale to the size of the problem we have. A goal could be to provide technology so that parents and/or math and/or physics teachers can supplement what students do in the classroom such an online assistant.

Here are my reasons why I think online assistant is plausible now despite its sorry 20th century track record:

  • The successes of open source software and Wikipedia. The ability of volunteers to create interesting and high quality material has been demonstrated many times in our field. I see no reason why this couldn’t happen for education assistants.
  • Cloud Computing means there need not be a local administrator running local hardware. This was a major problem with old hardware and out of date software given limited budgets. The remarkably low cost of nearly infinitely scalable computing is a godsend for K-12.
  • Cell phones mean everyone can have access. Half of the people on the planet have cell phones, and they are increasingly becoming smart. Cell phone are so popular that schools have policies banning them, as opposed to bake sales trying to raise funds to buy some PCs. Tablets and netbooks are further lowering the costs of getting something with a bigger screen; basically, all the software is in the Cloud.
  • WiFi makes “wiring” a school trivial. Even coffeeshops offer free WiFi, so its trivial for campuses to have them also.
  • Highly productive programming environments for Software as a Service lowers the difficult of creating online teaching services and more people can build them. Frameworks like Ruby on Rails are remarkably productive, and fun to use. Hundreds of thousands of people today can build services, and scale them up if needed using Cloud Computing.
  • Crowdsourcing to help with online questions. The success of Mechanical Turk and Wikipedia, where people do a lot of work for no or remarkably little money, suggest that there are many people who could answer questions that would come up naturally from people trying to learn from an online assistant. Hence, online assistants may end up in reality being hybrids of computers doing what they do well with online people doing what computers don’t do well.
  • Our material lends itself to online teaching and evaluation. While making an assistant for English is probably an AI-hard problem, we have the advantage of being able to run programs to see if they work or not. And their is lots of technology developed and being developed for testing and debugging.
  • The current trend of standardized testing in the US may lend itself to online assistants. This was Roscoe Giles’ argument, who was at the meeting. Leaving aside whether standardized tests are good or not, it seems like an online assistant could help students for many fields improve their scores on these tests. Hence, online assistants could get an early positive reviews because of their help in schools where they are deployed. Hence, there is a window of opportunity with a clear measure of success to demonstrate what we do can help K-12.

Let me finally wrap up. While I am pessimistic about getting high quality material taught by high quality K-12 teachers in US in the next decade or two, I am optimistic that a major online effort could scale and have a positive impact on a large fraction of the K-12 students within a decade.

If we can create technology that allows billions of people to search all the data online and get useful answers in less than a second for free, I see no obvious reason why we can’t dramatically improve IT education for anyone in the world with a cell phone by 2020.

June 25, 2010 at 11:41 am 34 comments

Creating (and improving) options for CS practice: Practice-It! and beyond

One of the (several!) pedagogical methods that I learned about at the DCCE meeting a couple weeks ago was Practice-It!, a new (to me) website from the University of Washington.  Practice-It! provides a variety of practice activities for students, from multiple choice questions, to predict-the-output problems, to exercises where students write a single method to solve a problem.  These help to fill the huge gap between reading the book and attending lecture on one side, and facing a full IDE (“a speeding compiler”) on the other side.  It joins pedagogical tools like CodingBat and Problets in an important, but surprisingly sparse area of tools for computing students.

I really like these tools and think that they fill an important role.  However, given that there is more than one tool in this space now, I have a criticism of all the existing tools, that I mean to be constructive.  Currently, the coding problems in these tools invoke a compiler or interpreter and return the error generated.  We can do better, and need to because the errors messages of virtually any interpreter or compiler presume a knowledgeable, professional programmer.  They are unclear, often useless, and always infuriating for a novice.

Here are a couple examples.  In CodingBat, I tried the Python problem where I have to write a function to determine if I can sleep in, depending on whether it’s a weekday or during vacation.  The inputs are booleans, but I tried (like many students) to write the function without reading the description of the inputs. I made assumptions about the inputs being objects and collections.  I compounded the error by writing the code “weekday is in vacation” as opposed to the correct “weekday in vacation.”  The error message isn’t useful.  My semantic error (of ignoring that the inputs are booleans) is hard (but doable!) to catch and address.  My syntax error is not helped by this message.

Practice-It! works similarly.  Here, I’m asked to write a Java method, and (again, as a student might) I decide to just get the basic method declaration in first — but get it wrong because I forget to deal with input parameters.

The error messages from the Java compiler are worse than useless.  They mention things like “enums” that I (as a student working on such a simple problem) have never seen.  To the credit of Practice-It!, they are collecting these awful error messages and trying to generate student “friendly” versions.

I wonder, though, if we can do even better than rewriting Java’s error messages. In each of these situations, we have a lot of knowledge about what code the student should be writing, what errors we might expect, and what the student knows already.  We should be able to tune the error messages to the problem.

Here’s the radical idea I’ve been exploring:  What about building our own parsers?  A parser for any of these problems does not have to be a parser for all of Java or Python. In fact, it shouldn’t be.  We know from lots of research (e.g., Lewis Johnson’s PROUST and Anderson’s Cognitive Tutors) that student answers to coding problems mostly fall in a small range of options, and those with radically different answers are far more likely to be radically wrong than brilliant-and-different-thinking — and letting beginning students flail with the all the flexibility of the full language is simply wasted time.  Only let the students type in a subset of the language, but provide understandable, informed error messages for that subset that are tuned to the problem.

As computer scientists, we might blanch at the complexity of writing parsers, remembering hours spent battling Lex and YACC.  Lex and YACC were written before 1975. What’s the possibility that we could do better in 35 years of development and Moore’s Law increases? I’ve been exploring OMeta lately for just this purpose — it makes it possible to build parsers for rich languages in surprisingly few lines of code.

The constructive recommendation that I have for computing educators building (or like me, considering to build) tools to fill the book-to-IDE gap: Be computer scientists, who build their own programming languages tools and can use these tools for improving education.  We don’t need to use a compiler as a monolithic piece of software.  We know the techniques used in building those compilers, and we can mix-and-match the techniques and components in our tools to help our students learn.

June 25, 2010 at 11:29 am 5 comments

More teacher education vs. centralized control

Linda Darling-Hammond’s new book The Flat World and Education: How America’s Commitment to Equity will Determine Our Future is excerpted in this piece at I have the book but hadn’t started it yet, but now I’m really intrigued.

In this excerpt, Linda Darling-Hammond is contrasting the success of Finland with the direction of educational change in the United States.  While the US has moved more toward standardized testing and increased curricular standards (even at a national level), Finland has (instead) decreased the national standards and instead increased education for its teachers — three graduate years, paid for by the state.  The goal is to increase the quality of the teachers, rather than try to check outcomes and enforce standards (in some sense) after the fact.

This is relevant for us because the current trends in improving computing education (e.g., the new AP “Computer Science: Principles” exam, and the efforts toward getting CS into the Common Core) look much more like the US mainstream strategy than the Finland option that Darling-Hammond is praising.  I admit my naiveté — I had not even considered the trade-off between our current centralized strategy in high school CS and this option for fewer standards and better education for teachers.  I’m not sure that Darling-Hammond is right (e.g., will a strategy that works in Finland also work in the larger and more diverse United States?  Can we create these post-graduate teacher education programs in the US, at scale, especially in CS where such programs are almost non-existent?), but I’m intrigued and want to learn more.

The process of change has been almost the reverse of policies in the United States. Over the past 40 years, Finland has shifted from a highly centralized system emphasizing external testing to a more localized system in which highly trained teachers design curriculum around the very lean national standards. This new system is implemented through equitable funding and extensive preparation for all teachers. The logic of the system is that investments in the capacity of local teachers and schools to meet the needs of all students, coupled with thoughtful guidance about goals, can unleash the benefits of local creativity in the cause of common, equitable outcomes.

Meanwhile the United States has been imposing more external testing—often exacerbating differential access to curriculum—while creating more inequitable conditions in local schools. Resources for children and schools, in the form of both overall funding and the presence of trained, experienced teachers, have become more disparate in many states, thus undermining the capacity of schools to meet the outcomes that are ostensibly sought. Sahlberg notes that Finland has taken a very different path. He observes:

The Finns have worked systematically over 35 years to make sure that competent professionals who can craft the best learning conditions for all students are in all schools, rather than thinking that standardized instruction and related testing can be brought in at the last minute to improve student learning and turn around failing schools.

via Steady Work Finland.

June 25, 2010 at 9:37 am 3 comments

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,394 hits
June 2010

CS Teaching Tips