The 2020 Olympic Games (delayed to 2021 due to the pandemic) have recently ended in Tokyo. The Olympics are about elite athletic competition. The athletes in Tokyo were pushing outward the edge of what we think humans are capable of doing. They tried to jump further and higher, run and swim faster, and change our understanding of humans’ limits.
For some faculty, this is the point of higher education. I was recently in a faculty retreat where we were talking about improving access to the CS major, particularly in order to support more diversity in many forms. One of my colleagues pushed back. He is in favor of improving access and increasing diversity, but he wants us to also to acknowledge our responsibility to provide the best-prepared students with an elite education. There are students who come to our campus with a strong prior background, with enormous interest and self-efficacy, who want to succeed in the existing social systems. They come to us to prepare them to do things in CS that have never been done before, to invent and innovate, and to change the world.
Higher education can serve to be an engine of opportunity. Going to college can lead to greater social mobility than one’s parents. But more often, higher education perpetuates inequality (see The Chronicle of Higher Education series on this topic). Rather than developing everyone’s talents and abilities, we focus only on preparing those who are already well-prepared, which privileges those who are already privileged.
How do you see as your job as a teacher? Let’s use a sports and health analogy. Are you a coach, pushing the top athletes to achieve as much as they can? Or are you a public health worker, making sure that the environment is safe for everyone with a goal of everyone having a healthy life?
For the moment, let’s say that we are promoting the coach model, and we want to help our top athletes reach the Olympics. We can aim for our CS students to be high achievers in computing, to be one of the elites. We can teach our students skills in software engineering, research, and entrepreneurship, and we can implement assessments that filter out those who don’t have what it takes to be a top competitor. This is already a common model for CS education at top institutions. But it’s missing an enormous potential impact of CS.
Elite STEM education needs computing, too. Each year that the Nobel prizes come out, I hear about the laureates who used computation to achieve their breakthroughs. We can expect that all future research that is competitive for a Nobel prize will require computation. Computing is useful not just at the very top of the pyramid. All elite scientists, engineers, and mathematicians will need to be skilled at leveraging computation within their domain.
But then comes the critical question: Who is best positioned to teach elite scientists, engineers, and mathematicians about computation? Should it be the domain experts or the computer scientists? My answer is "Yes, and…".
One of the best books ever written on the learning sciences is How People Learn: Brain, Mind, Experience, and School which is freely available from the National Academy Press (see link here). Chapter 2 is on How Experts Differ from Novices (see link here). Right there on the first page of the chapter it says, "Though experts know their disciplines thoroughly, this does not guarantee that they are able to teach others."
A huge challenge to learning and teaching in higher education is that faculty often have an expert blind spot. The foundational knowledge, the basic "how it works" knowledge is so ingrained and so tacit that faculty don’t even see it to teach it. Faculty often don’t even know what they need to teach, because it’s "obvious" to them.
The expert blind spot is most significantly a problem when teaching the foundational concepts. If you use computation every day for decades, you stop seeing it. You think about what you can do with it, but you actually forget what you didn’t know and what was hard to learn. Upper-level courses (past the "how it works" stage) are about how to be a good computational scientist, engineer, or mathematician. Those classes ought to be taught by the domain experts — the ones who know best the practices, skills, and knowledge of computational science, engineering, and mathematics. But not the foundational courses.
Here’s a thought experiment: Look at these five letters: "Apple". You know that once upon a time that first letter was two slanted lines and a horizontal line to you, but now you are unable to only see the letters. You automatically read the word ‘apple’. Teaching someone to read requires us to study how people learn to read. We can’t just reflect on it — our learning experience is now blind to us. Teaching someone about computing requires us to study how people learn (and struggle with) computing.
The foundational courses should be taught by someone who focuses on seeing the expert blind spot. A student with great prior background and enthusiasm for science, engineering, and mathematics still needs to be taught computing. Those teachers should study what people don’t know about computing. That’s what a good foundational course in computer science should be about. These foundational courses should also be relevant. They should be contextualized in what the students want to do with computing — we call this contextualized computing education.
Computing education research is developing a good track record at figuring out the needs of those who study computing but are really interested in the rest of STEM.
- One of the most cited papers on computational thinking is "Defining Computational Thinking for Mathematics and Science Classrooms." The authors interviewed mathematicians and scientists to figure out what they do with computing, and then drew on research literature to identify what students would need to be taught.
- Another example is a recent thread on the SIGCSE-Members list about whether variables should be described as "boxes" or as "labels." There is a rich literature on the use of each. This isn’t a literature that scientists, mathematicians, or engineers will likely know or care about. Probably most computer scientists don’t either. But it’s exactly that kind of knowledge that you want for the teachers of computing to future elite scientists, engineers, and mathematicians.
- There is a growing literature developing on how to develop computing curriculum in collaboration with domain teachers, e.g., in mathematics for middle and high school students (see paper here), in fractions for elementary school students (see paper here), and in biology for undergraduates (see paper here).
I see two paths to help STEM learners gain the computing skills and knowledge they need:
- Option 1: CS Does It. We trust mathematicians to teach foundational math, because they’re the ones who are going to be most expert at how to teach math, at what students typically get wrong, and at what works to get students past those early stages. Same for physics, chemistry, biology, and so on. Computer science should be the place to teach everyone the computing education they need — as long as we do it in a relevant and contextualized way. We should not teach the same classes to everyone. That’s what we’ve been learning in our task force at the University of Michigan to define computing education for liberal arts and sciences majors (see link here). But some computer science departments are deeply focused on producing elite engineers, so this first option might not always be available.
- Option 2: Invent Something New. An alternative option is to build a computational science community that focuses on seeing the expert blind spot. Michigan State University has created a Department of Computational Math, Science, and Engineering joint between their Engineering and Natural Sciences Colleges. They are charged with teaching computational modeling to everyone. CMSE has scholars who are explicitly engaged in physics and computing education research. They are a hybrid designed to provide foundational knowledge.
With computer science undergraduate enrollments on an exponential growth curve at many institutions, it can be difficult to see who else needs computing education. But we should. The future isn’t only in computer science. Computer science can be key to building many futures.
Mark Guzdial is professor of electrical engineering and computer science in the College of Engineering, and professor of information in the School of Information, of the University of Michigan.
Thanks Mark. Funny, I was bringing my beginner mind to study of a Udemy course intended for folks interested in developing computer games using a simple, nicely-done foundation. I noticed the degree of tacit knowledge and complexification (in the name of simplicity) that was visible at every section of the course. Too many unconnected dots.
There I stumbled into my own tacit knowledge, blindly assuming installation of git and also understanding reliance on editing files with VS Code. It is illuminating to see the online Q&A and Discord discussions where some beginners are brave enough to reveal their struggles and misunderstandings. Others post impenetrable "expert" responses that fail as useful guidance and also expose tool religions.
This has me wonder if some appeal to having elites in a class is a form of laziness as well as confirmation of brilliance for those who teach with little preparation/interest around how people learn.