As a computer science teacher at Gunn High School in Palo Alto, CA, and a co-founder of the Silicon Valley chapter of the Computer Science Teachers Association, I sometimes get asked what I think regarding the state of CS education and its importance. I was interviewed by KQED, the local NPR station regarding some of my opinions. I don’t know how much of it (if any) will air, but since interviews are subject to edits and I am inexperienced with them, I thought I would blog my opinions to be as clear as I can.
It is important to lay out what is at stake. It is currently possible in most states to graduate without doing any kind of computer science class. Our education system may use computing and technology to deliver education, but it does not expect students to learn how to do computing and make technology. People get programmed by what they view on the internet, but students are not expected to learn how to program anything in order to receive a diploma.
Computer science is about abstraction, problem decomposition, design, creativity, data analysis, and programming. It’s about creation of products as opposed to being an end user.
Students who learn to think about these things are going to be at an enormous competitive advantage over their peers when applying to colleges and applying for jobs. Code.org predicts a chasm of one million jobs between industry demand for computing labor and college graduates who are qualified to fill the positions.
It is not at all hard to make a national security case. Do we want other countries who are taking CS education seriously to pass us by because we were too stubborn to do what it takes to teach computing?
There is all sorts of good curriculum being developed for K-12, so I am not going to focus on that. If you are interested, I refer you to CS10K, ECS, and CS Principles, and there is more beyond that. While K-12 curriculum may be a problem, it is being addressed, so I will focus on other issues.
Here are some things being considered to help solve the problem.
There is good news and bad news. First the good news.
In California, ACCESS has been working on legislation. California had seven bills and a resolution in the state legislature regarding CS education. (I testified on behalf of AB 1539 and AB 1764, the latter being one of two of those bills being sent to the Governor as I write this.)
Now the bad news… Until these pieces of legislation come with money, legislation won’t address the dearth of CS teachers.
2. Retraining teachers from other disciplines.
I think this is worth doing, but it has limited upside. It’s sort of ironic that I am saying this because I spent a fair amount of time this past summer, teaching courageous and enthusiastic teachers how to deliver content from UC-Berkeley’s Beauty and Joy of Computing class.
TEALS is a program that is all over the country, trying to help. They put computing professionals, volunteering their time, into classrooms to team teach. The goal is to transfer enough of the discipline to the teachers as well so they can take over and start delivering the material and grow programs on their own. (I disagree strongly with CS being treated as a science class, but I agree it would be nice to make it ubiquitous.)
Happy to be proven wrong, but here the kind of thing I envision happening.
Suppose my school decided to retrain me as an English teacher. I could probably learn enough to be competent, but teaching English isn’t my passion. I clearly wouldn’t have the background that my colleagues in the English department have because they have studied the discipline intensely for years, learning from scholars at universities and collaborating with students with similar interests during that process.
I think the same sort of thing applies in CS. Many retrained teachers will be enthusiastic about computing, study it intensely and, in time, become experts. Others will teach CS, but it won’t be their passion, and that’s often a recipe for unhappy students who see an unhappy teacher. There are lots of other possible outcomes, some better than others. No matter how you slice it, it isn’t the same as hiring a person with a CS background to teach CS.
As I say, I’m happy to be shown wrong. I look forward to seeing how the retraining work plays out. Even if imperfect, programs like TEALS could help. But it takes money. At least with TEALS it is not taxpayer money as Microsoft is the key sponsor.
3. Online courses.
Who doesn’t like good, free content?
Maybe this is the way of the future, but while technology such as MOOCs can be helpful, but they are not a substitute. What’s odd to me is why so many people seem to find this to be surprising.
For students who have the time and motivation, a MOOC can be great. However, what we have learned from current technology is that 90% of people who start MOOCs don’t finish them. We also learned from Udacity and San Jose State that MOOCs may not be a panacea.
I don’t doubt that people benefit from an online course even if they do not complete all of it. That said, if a student wants to go to college, completing half of a junior year English class probably wouldn’t help on an application. I’m not an admissions officer at a university, so I welcome being corrected by one, but I’d guess that course completion matters for CS too.
When I was a graduate student, I was very interested in how students collaborated on programming assignments. They had wonderful discussions, and the sharing of ideas led to better ideas. Being in the same place, it was easy for them to create physical artifacts (diagrams, code, outlines, etc.) that could be built upon and argued about in real time. There are visual cues you get when in the same place as your colleagues–facial expressions and body language, for example. You can hear tone of voice. These things matter in the learning process.
So far as I know, there is no substitute for this when courses are delivered online. The quality of learning is just better when people are interacting with each other.
I think we do a disservice to our students when we try to remove the social component of learning in order to save money.
(NOTE: I would welcome info on the latest and greatest research on this. Happy to be shown wrong, but I suspect that millions (billions?) could be saved merely by looking to cognitive science research on how kids learn best.)
4. Infuse CS into existing mainstream classes.
Pat Phillips compiled some wonderful possibilities nearly a decade ago, and the connecting computing to other disciplines is important. Still relying on this alone is not enough. Imagine asking teachers to incorporate trigonometry or physics or French or US history into classes in other disciplines. You could do some cool lessons, but there is a difference between a taste of a discipline and immersing oneself in it.
So, by all means do CS lessons as part of curriculum across disciplines, but don’t treat that as a substitute for learning CS as a discipline.
Well, I hope this is being considered because I fear we are stuck if it isn’t.
This sounds obvious: If we want to teach kids rigorous computer science with a game plan for what happens after high school, we should hire some qualified computer science teachers.
If we want to create a crop of highly-qualified CS teachers, we will need to invest in them. This means creating financial incentives so rational people will want the job. Right now, becoming a K-12 teacher of any stripe is fiscal madness–all one needs to do is look at the attacks on unions, salaries, benefits, you name it. Why would someone want to subject themselves to a career of that?
Becoming a K-12 CS teacher is a double-whammy. A young person developing technical skills in college can go straight into industry and make more than twice what a teacher does. To teach in a public school, a teacher must pay to go through a credential program. Seriously, who wants that?
If we want talent–especially young talent–to consider teaching computer science, we need to make it a noble, well-compensated profession.