This fascinating look into CS education in Vietnam from Google engineer Neil Fraser has been making the rounds. It sounds like he did some great work over there and it’s wonderful to hear a first-hand report about a system that’s more successful than ours.
There are, however, a few places where he makes comparisons to the US that aren’t correct. I know, because I was the computer science teacher he visited here in San Francisco. Here’s what he writes:
A couple of visits to San Francisco’s magnet school for science and technology (Galileo Academy) revealed grade 11 and 12 students struggling with HTML’s image tag. Loops and conditionals were poorly understood. Computer Science homework was banned by the school board.
First, Galileo isn’t a magnet school. It’s a comprehensive public school with no admission criteria and the same graduation requirements as all SFUSD schools. It happens to have one of SFUSD’s three AP CS programs, but there’s no specific structural support for science or technology.
Second, When Neil visited my classroom in 2009, he spoke to a 10th grade class partway through their first semester of CS. It’s true that some of them struggled with his lesson on doing script injections of an IMG tag to a web form. Others got it fine.
Finally, CS homework is not banned by the school board. I don’t know if they even have the authority to do such a thing. My AP CS students may have wished otherwise, but they certainly had homework.
I want to be clear that my position here is not that US computer science education is in a good place. However, I think we should strive to be accurate and clear in talking about what the situation and the challenges are.
I’m teaching The Beauty and Joy of Computing (CS 10) this summer for Dan Garcia at UC Berkeley, which has been really fun. One of the big ideas about programming in the course is recursion (the other two being abstraction and higher-order functions). In addition to the programming exercises, we also look at how bigger systems/industries work, current research, and the social implications of all this technology. I love that Dan and the other CS 10 developers included all of this in the introductory course!
For example: How many ways can you make change for a dollar given the typical US coins (penny, nickel, dime, and quarter)?
I like showing this because, unlike the straightforward translation of an inductive definition (such as factorial or Fibonacci), this problem isn’t obviously recursive on its face. It actually requires a bit of trick thinking to see how the usual process of dividing the problem, invoking the function, and the combining the results can lead to the solution. It feels a bit closer to the reality of an application than, say, “What’s the 15th Fibonacci number?”
Another great thing about this problem (and one entry point to finding the solution) is that the function has two parameters: the amount of money and the list of coins. Assuming we don’t have the same powers of instant insight that Abelson and Sussman possess, we can still start by reasoning that we must need to make the problem smaller by adjusting one or both of those parameters. That hint — gleaned just by reasoning in general about recursion — is enough to get started down the right path. I won’t spoil it for you if this is the first time you’ve seen this problem, but the solution is given in SICP if you want it.
Visualizing a tree of the solution shows some obvious inefficiencies dealing with pennies. The path that leads to a 100-penny solution for a dollar includes 200 recursive calls just to arrive at a conclusion that probably was obvious: Given only pennies to use, there is exactly one way to make a dollar. I pointed this out in the lecture and left it at that. But one of my students came up after class to ask about it and I encouraged him to try to optimize the solution. The next week at office hours, he brought in his code and we ended up in a very interesting discussion.
Among the questions posed: Are there more optimizations to be made beyond pennies? Can we generalize those optimizations? Have we biased our understanding of the problem by focusing on solving for amounts that are multiples of 5 or 10 cents (when we have nickels and dimes to use)? What if there’s no penny-type coin? What if none of the coin values are multiples of each other? A pathological currency indeed that uses prime coin values. What does an iterative solution look like? And so on.
This student went away and worked on it again, reporting back that he had an iterative solution based on decomposing the amount and substituting smaller denomination combinations, but that it over-counted solutions by calculating the number of permutations instead of combinations. What a perfect motivation for investigating the relationship between the two! And all of this from a simple puzzle-type question with a clever recursive solution.
Maybe this kind of delving is normal at the university level, but I find it quite refreshing coming from the high school teaching experience. I like that this inquiry can be self-directed: the student certainly didn’t need to dive into this problem, but everyone needs to dive into some problem at some point. And yet, without some support that dive can become aimless or overwhelming very quickly. This provides one answer to the question, “Why not just take the course by watching videos?” We real-life real-time teacher people still provide value in supporting and engaging an individual learning path. That is something that I don’t see changing, even as the educational enterprise follows the technology trends of our day.
In this context, “ask” is a bizlingo noun meaning “request” or “proposed terms”. So an alternative title for this post could be, “What the hell do we actually want people to do?” The latest issue of ACM Inroads has an entire section devoted to CS Principles and the CS10K Initiative — or, as I like to call it, the most ambitious educational reform project without a web site.
I say that because if you’re actually putting together a “large-scale, collaborative project bringing together stakeholders from wide-ranging constituencies”, you don’t bury all the information about it behind a paywall. I happen to be teaching at UC Berkeley this summer, but otherwise I wouldn’t even have access to the paper that describes the CS10K project. And I think I’m the kind of person that might be able to help. I actually teach high school computer science! I want more colleagues! I believe CS education is vitally important for young people! The fact that the first result for “cs10k” in Google takes you nowhere is a problem. The lack of open, public discussion of the issues and plans is a problem. The lack of savvy about engaging the whole community — including high school teachers and administrators — is a problem.
But dire as it is, that’s not the biggest problem. The biggest problem is that we don’t agree on what we’re asking for. It’s not that we disagree. We just have no idea. But at least the goal has been made clear, even if not effectively publicized: A new AP course in 10,000 high schools by 2015. (Or maybe 2016 or 2017, I now hear.) In 2011, there were only 2,667 high schools in the world with students taking the AP Computer Science A exam. Today, I think there are about 2,100 high schools authorized to offer the course in the US (not that all of them actually do). There are about 40k total public and private high schools in the US.
So this is a massive operation, to move from something like 6% to around 25% of schools offering a CS course. We’re talking about bringing at least 7,500 new schools online — schools that have never had a computer science course. I’m assuming that the number of schools offering a legitimate non-AP computer science curriculum rounds to approximately zero. There may be a handful of amazing exceptions, but it’s a handful and this is a numbers game.
So what specific policy changes will help us get there? We can’t just wish for a unicorn. We have to be able to at least theorize a mechanism that delivers a unicorn. And that’s a lot harder to do. So is it simply a matter of offering an attractive, accessible, engaging curriculum along with professional development? I suspect that this alone, although wonderful, will not do it.
Even initiatives such as Computing in the Core, which acknowledges the complexity of the issues around graduation requirements and teacher certification, limits its advice to governments to broad general statements like, “Ensure that courses count toward a student’s core graduation requirements either as mathematics, science or computer science credits.” That’s getting to the unicorn by saying, “Make sure you like unicorns.” It doesn’t tell us anything about how to make it happen. There’s a whole world of difference between counting the course as math or counting it as its own subject.
Given the very decentralized nature of educational policymaking in the US, the best advice anyone has yet come up with is essentially, “Figure out what makes sense in your state/district/school and then try for it.” At least that’s what I read in Chris Stephenson and Cameron Wilson’s latest article, Reforming K-12 computer science education… what will your story be?. Again, sorry you can’t read it without a journal subscription. I hope this represents ivory tower obliviousness rather than the belief that anyone who isn’t an ACM member wouldn’t be a useful partner. But even if all current high school computer science teachers could and did somehow read the article, that’s still not nearly enough involvement for the non-plan to succeed. We need thousands of schools to act, but we’re not telling anyone at all what to do in any specific way. The little conversation we are having is taking place behind closed doors.
At the 2012 Berkeley CS4HS meeting last week, we tried to dig into some of the specifics. Pierre Bierre (of AlgoGeom, one of the few CS courses that has achieved (c) Mathematics status) asked us to consider what we’d like to work towards. These are the options that we discussed and the points raised for and against each:
Make CS a high school graduation requirement
Many in the room agreed that CS is as relevant as Biology or Algebra in terms of understanding how the world around us works and providing a model for thinking. However, it’s also a reality that teachers of required-for-graduation courses are under a lot of pressure to simply pass students. Many school districts now require three years of math for graduation in order to match the UC a-g requirements, and this has lead to the rise of all sorts of bogus courses that exist only to produce math credits. This reminds us that setting a bar often incentivizes the lowering of that bar to the point of meaninglessness. Which isn’t a reason not to try. But the question is: What would CS replace? If the answer is “any elective” then it will be a tough fight — a true CS course is probably harder for most students than most electives. But if the answer is “some current element of the core curriculum” then we’re fighting an even harder battle. There’s some indication that California’s Commission on Teacher Credentialing might be ready to test an experimental credential for CS. I don’t know much about that but I support the idea and would like to know if anyone is actively working on it.
Get a CS course recognized as a core curriculum (math or science) course
This is really about UC recognition — local district recognition means little if the student can’t use the credit to apply to a UC. So getting a CS course into the (c) Mathematics section is something that many teachers have tried and, when the focus of the course is on programming, it’s something that has been resisted strongly by the UC Office of the President. There’s also reluctance on the part of many, including outspoken disagreement from Brian Harvey, to creating a situation where students choose between Calculus and Computer Science. CS really isn’t math or science. Dan Garcia (sharing a sentiment I’ve also heard from Owen Astrachan) asserted that it’s engineering. So perhaps we should be looking for a broader kind of new graduation or admission requirement. But I don’t know of any other engineering area (mechanical? chemical? civil?) that’s ready to push curriculum to the high school level, and this would only compound the certification/credentialing problems.
Use AB 1330 to make space for new CS courses
This bill that allows CTE courses to substitute for language or arts courses a California-only strategy for now. The legislation was strongly opposed by arts and foreign language teachers who see it as a threat to their jobs and it’s a long battle to fight that state-by-state to get a change that we’re ambivalent about exploiting. There are mixed feelings in general about the CS being filed with Career Technical Education, partly because the perception is that such courses in general lack academic rigor. In CS this plays out as “applications” courses that teach the use of tools like Microsoft Word and PowerPoint — no one really believes these are “career” skills but more of these courses exist than you’d hope. A real career-oriented CS course might look more like CNC Machining. Or the ECS curriculum could be used to create a true CS CTE course. Still, no one feels great about pushing high schools to close arts or language courses even in favor of a true CS course. Most significantly though, AB 1330 does nothing to change the UC a-g requirements, which means that CS is still effectively relegated to its current elective slot for many students.
Push CS content into other required subjects
There’s a genuine belief that CS is an important and useful lens through which the study of other subjects (particularly the sciences, but also math as in the case of AlgoGeom) might be enhanced. On the other hand, someone asked how we might feel if the biologists showed up in our CS classes and demanded that we teach some bio while we’re doing what we’re doing — considering, you know, that biology is an important application of CS. So there are limits to how much computer science will really fit inside other subjects. I think there’s an opportunity here to do something (which the UCCI Institue is trying for this summer) but I don’t see where the urgency is going to come from that will suddenly start moving this into thousands of schools a year. Lots of “curriculum development” work is sitting on shelves in binders.
Add a UC admission requirement (turn the “a-g” list into an “a-h” list)
I believe the current list is frozen for a year, but when it thaws again we are in the same position as other young fields (academic subjects less than 100 years old) in desiring recognition. If the UC system phased in a requirement like this, it would certainly drive the creation of these courses in many high schools. While this is the most obvious and powerful lever, it is also therefore one that every educator and administrator in the state will be nervous about. I can imagine that some districts/schools wouldn’t be able to put a program in place, even if given a long runway. This would be a huge deal — but with so many districts committed to making their graduation requirements match “a-g” it’s the only option discussed so far that seems to me like it can really move the needle. This option is reported to be very unlikely, but it’s the one that would most clearly have an immediate impact. And even if this happened today, it would be at least 2016 before it could be phased in. Something on this scale has to appear pretty soon or else CS10K is a bust.
Add a UC admission recommendation (an “h” category with 0 required/1 recommended)
Get a UC admissions officer to state that CS is seen favorably in the admissions process
These seem to me like next-best options, but Tom Murphy from Contra Costa College raised a very important point: This could be a social justice disaster. Creating something “optional” or “encouraged” — knowing that parent involvement and district resources are wildly divergent — is a good way to increase the achievement gap. This reminds me of Justin Reich’s work (How Free and Open Education Might Widen Digital Divides). This is something that I’m sure UC officials would have to consider when discussing possible changes.
So it appears that we are in a very difficult position. None of the players in the industry who could throw their weight around (the Apple/Google/Microsoft/Oracle kind of players) legislatively really need anything to change. They can always skim from the top people around the world. The demand will drive enrollment at the top-tier brand-name schools they tend to hire from. It’s really the startups and smaller companies trying to hire proficient programmers who suffer. There doesn’t seem to be the political will to change, even though almost anyone you ask on the street will say that they believe computers and programming are important in our world, that learning about them will help in almost any career, and that it’s crazy for high schools not to teach this stuff. So where do we go from here?
Now Noah was there, he answered the callin’
and he finished up the ark just as the rain was fallin’.
He marched in the animals two by two,
and he called out as they went through,
‘Hey Lord, I got your two alligators and your couple of geese,
your humpy bumpy camels and your chimpanzees.
Got your catsandratsandelephants – but Lord, I’m so forlorn
’cause I just don’t see no Unicorn.’
from The Unicorn by Shel Silverstein
This is my attempt to map out some of the initiatives that I think are most exciting, placing them in a context that reveals opportunities and possibilities for collaboration.
AFSE – Academy for Software Engineering
This New York high school (opening fall 2012) will be the first public high school that I’m aware of to offer an explicit focus on software. With support from Fred Wilson at Union Square Ventures, we’re sure to see some student-entrepreneurs and collaboration between industry and educators that previously only happened at the university level.
Also opening fall 2012, this public high school in Los Angeles will be based on a making and play curriculum, using games and game development in some areas. Executive Director Lucien Vattel is a poster kid for the disruptive spirit, having left a faculty position at USC to jump into the trenches of K-12 education and forge a nonprofit organization to support his research. Now with $3.8M from AT&T, the goal is to share and replicate what works from the LA school nationwide.
Q2L – Quest to Learn
This Manhattan public school has been open since 2009, starting with 6th grade class and planning to grow through 12th grade. Executive Director Katie Salen is a MacArthur Fellow (the MacArthur Foundation also supports the school) who wrote a book on game design. They seem to be doing better than city averages on the standardized measures, although I don’t really know how to interpret those numbers. Now the Gates Foundation has gotten in on the action, helping to fund ChicagoQuest, which opened in fall 2011 based on the same model. While their dumping money into charters and small schools hasn’t been a smooth ramp to results, if we believe in failing to succeed then maybe this is the time they score an epic win.
It’s pretty hard to argue that two super-established traditional educational institutions are going to disrupt their entire show, but they’re also in the interesting position of being more or less bubble-proof. That is, even if higher education is as overvalued as some talk would have it, MIT and Harvard are unlikely to suffer in a crash. Like housing in San Francisco, their product is always going to fetch a premium. This gives them a certain freedom and willingness to experiment. Remember that MIT stared OpenCourseWare in 2001 — five years before Sal Khan founded Khan Academy. This isn’t just bandwagoning, particularly with $60M to get things rolling.
Presumably you’ve heard of this one. I don’t think the talk about flipped classrooms adds up to a real disruption. Example videos and online practice exercises more or less support and play nicely with the existing structure, pushing it forward but not necessarily presenting a whole new model. On the other hand, I don’t think we’d be seeing things like Coursera or Udacity without the familiarity of Khan. Interesting to note that Khan is getting into the summer camp space as well, presumably as a way to generate research data and footage of their vision for learning. I look forward to seeing that and applaud them if they do end up showing folks how to support learners in project-making. That would move their dot a little closer to…
Everyone who lives on the fringes of the internet knows about hackerspaces. That leaves the entire rest of the population whose exposure to this community comes via Make Magazine and the annual mainstream media coverage of Burning Man. With Dale Dougherty and Saul Griffith taking a DARPA grant of up to $10M to bring their stuff to 1000 high schools over four years, a lot more kids are going to find out that you can just start doing stuff that seems interesting and that the basic tools don’t need to be expensive.
Jane McGonigal is the unofficial spokeswoman for gamification, and her games (which I first became aware of when friends were playing World Without Oil in 2007) have consistently pushed the idea that structuring experiences for yourself and others based on an understanding of both what you consciously decide you want and what will motivate you is a good way to achieve something. SuperBetter is an attempt to make that practice more accessible to the masses. It may just change the way we think about the path to our goals, whatever they are.
A Ring of Fire
This map of hot spots is, of course, incomplete and probably missing some important dimensions given that I had to draw it on a regular two dimensional piece of paper. Nonetheless, I think it offers a framework thinking about future eruptions (to continue this possibly ill-conceived Pacific Rim analogy) and migrations between these islands. It’s an exciting time to be thinking about education beyond traditional schools. Many of us believe that things in this area will be significantly different in five or ten years, but it’s pretty hard to predict what that new topography will look like. My advice: Keep an eye on the lava.
The Teaching Channel and Edutopia have a new co-produced video series called Tech2Learn, and their first segment profiles my 11th grade educational games class project! This whole project was just a crazy idea back in 2009 — it’s satisfying to see how far we’ve come.
The games from this year are online and ready to be played — check them out!