https://bit.ly/2W3a9Ty August 18, 2021
The 2020 Olympic Games (delayed to 2021 due to the pandemic) have 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 computer science (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 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 as an engine of opportunity. Going to college can lead to greater social mobility than one's parents. More often, higher education perpetuates inequality (see The Chronicle of Higher Education series on the topic at https://bit.ly/3BIyexN). Rather than developing everyone's talents and abilities, we focus 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, ensuring the environment is safe for everyone with a goal of everyone having a healthy life?
For the moment, let's say 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 is missing an enormous potential impact of CS.
Elite STEM education needs computing, too. Each year the Nobel prizes are awarded, 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.
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 (https://bit.ly/3q4fdUk). Chapter 2 is on How Experts Differ from Novices (https://bit.ly/3mI9YYq). The first page of the chapter 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 do not even see it to teach it. Faculty often do not 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 did not 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 is 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.
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 (https://bit.ly/3EHOfGh).
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.
I see two paths to help STEM learners gain the computing skills and knowledge they need:
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 is not only in computer science. Computer science can be key to building many futures.
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.
I appreciate your insight and share your wonder. Spot-on!
©2022 ACM 0001-0782/22/1
Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and full citation on the first page. Copyright for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or fee. Request permission to publish from firstname.lastname@example.org or fax (212) 869-0481.
The Digital Library is published by the Association for Computing Machinery. Copyright © 2022 ACM, Inc.
No entries found