And then how did you get back into teaching at Stanford?
After spending a number of years at Google, the opportunity came up to return to Stanford. I really loved it here, and I missed the interaction with students. Working with them to introduce them to new topics and see them have that “Aha!” moment where they learn something new and appreciate that learning process. I missed that.
Do you have a signature teaching style? Or a philosophy of teaching?
I try to do things that engage students by doing demos in class, and to have analogies to real-world events so it can take some of the ideas in computer science, which often tend to be abstract, and ground them in a physical analog that can help them remember it. And it helps if it’s funny, too.
It must be interesting having students who’ve grown up in a digital world.
That also gives me an opportunity to motivate them. You can do an example in class that’s tied to their experience. It empowers them to think about not just being the user, but being the builder. For the last four years, in my intro class, Mark Zuckerberg comes every year to do a Q&A with the students. One of the assignments we do around that time is a simple version of Facebook that students write. And it helps give students the power of, you can do this, and the person who did this is going to come talk to you about what it was like for him.
I’ve read that women and minority students have been vastly underrepresented in high school computer science classes. In some states, no women or minority students even take the AP exam.
The disparity along gender and racial lines in computing is pretty stark. Part of that is that we need to have more of those opportunities. If we have education in computing at a small number of high schools and middle schools, they tend to be particular schools in certain demographic areas, and there are social dynamics involved, where early on, even in elementary school, the boys are taking the keyboards from the girls because they’re doing most of the typing. When you have a scarcity of an educational opportunity, there’s a greater potential for disparities. If everyone can get exposed, regardless of gender, socio-economic background, or race, you create more equality among the opportunities. We see that in a smaller way at Stanford. A couple of years ago we did a statistical study of women in computer science. Stanford, as a whole, is roughly 50/50. But the interesting thing is that when the enrollment numbers in computer science increased, not only did women join in greater numbers, but the percentage increased because we’re moving more towards the overall population percentage.
Should everyone take computer science?
There are two aspects to that. One has to do with technology being more a part of people’s lives, so everyone should have a better understanding of that technology. Even if they aren’t going to pursue a career in computing, they should have some notion of what a computer does, how it operates, and, when things aren’t working, what’s essentially wrong.
The other point is subtle. The ability to program or to understand different aspects of computing systems really involves clarity of thought. If you’re going to program a computer, you need to specify a set of instructions for the computer to execute, and those have to be sufficiently clear to get your problem solved. Otherwise, you have errors. Just having the clarity of thinking to lay out instructions is an analytical skill that’s useful for everyone.