Posts tagged ‘computing for everyone’
My Blog@CACM post this month is on the AAAS symposium I attended on undergraduate STEM education (see post here). The symposium set up for me a contrast between computing education and other STEM education. In math and science education, faculty are more likely to get continuing professional development and to value education more than CS faculty.
Why is it different in CS? In the blog post, I suggest that part of the issue is maturation of the field. But I have another hypothesis — I suggest that most CS teachers, especially at the undergraduate level, don’t think of themselves as teachers.
In my book Learner-Centered Design of Computing Education, I use Lave & Wenger’s situated learning theory as a lens for understanding motivations to pursue computing education. Lave & Wenger say every learner aims to join a community of practice. Learners start out on the periphery of the community, and work their way towards the center, adopting the skills, values, and knowledge that those in the center hold. They might need to take classes because that’s what the community values, or maybe they do an apprenticeship. The community of practice provides the learner and the practitioners a sense of identity: “I belong with this group. I do this practice. This is who I am.”
Lijun Ni taught me the value of teacher identity. Someone who says “I’m a math teacher” (for example) will join math teacher organizations, will seek out professional development, and will more likely be retained longer as a teacher. That’s their identity.
I believe that many science and math teachers (even at the undergraduate level) feel a sense of identity as teachers. Even at research universities, those teaching the intro courses in mathematics and science are likely teachers-first. They know that they are mostly no preparing future mathematicians, biologists, chemists, and physicists. They are preparing students for their chosen professions, perhaps in engineering, medicine, or computer science. The math and science teachers belong to a community of practice of teachers, e.g., they have a goal to be like the best teachers in their profession. They have an identity as teachers, e.g., they strive to be better math and science teachers.
I suspect that CS teachers feel a sense of identity as software developers. They see themselves as programmers primarily. They see themselves as producing future programmers. They take pride in what they can do with code. They have a sense of guardianship — they want the best and brightest in their field.
There’s a difference between CS teachers as programmers vs CS teachers. Programmers train other programmers. They learn new programming languages, new techniques of programming, the latest tools. Teachers teach everyone, and they learn how to be better at teaching. We need CS teachers to be teachers. It’s less important that they know the latest industry gadgets. It’s more important that they learn how to teach “all” about CS, and how to teach that CS better.
When Grady Booch came to SIGCSE 2007, I was surprised at how excited everyone was — people still talk about that visit (e.g., see the explanation for the BJC approach to computing). I realized that, for most of the people in the room, Grady was a role model. He was at the center of community that they most cared about. Note that Grady is not a teacher. He’s an exceptional software engineer.
There are serious ramifications of a teacher with an identity as a software engineer. I had a discussion a few months ago with one of our instructors, who told me, “I just don’t get why women would even want to be in computer science. Working in a cubicle is not a great place for women to be! They should get a better job.” I was shocked. I didn’t tackle the gender issues first. I started out trying to convince him that computer science doesn’t just lead to a cubicle. You could study computer science to become something other than a software developer, to work somewhere other than a cubicle. He wasn’t buying my argument. I realized that those cubicle jobs are the ones he wants to prepare students for. That’s where he imagines the best programmers working. He doesn’t want to teach computer science for whatever the students need it for. He prepares future programmers. That’s how he defines his job — a master software engineer with apprentice software engineers.
I am calling out undergraduate CS teachers in this post, but I suspect that many high school CS teachers see themselves as software developers (or as trainers of software developers), more than as teachers of computer science. I hear about high school CS teachers who proudly post on the wall the t-shirts of the tech companies who employ their former students. That’s a software developer focus, an apprenticeship focus. That’s not about teaching CS for all.
What would it take to shift the community of practice of CS teachers to value teaching over software development? It’s an important change in perspective, especially if we care about CS for all. Not all of our students are aiming for jobs in software development.
How did other STEM disciplines do it? How did they develop a culture and community of practice around teaching?
This is a really cool announcement. I believe that computing helps with all kinds of STEM learning, and admire the work at Northwestern on Agent Based Learning in STEM, Project GUTS, and Bootstrap. It’s particularly important for getting CS into schools, since so few schools will have dedicated CS teachers for many years yet (as described here for Georgia). I’m excited to see that Bootstrap will be moving into Physics as well as Algebra.
Bootstrap, one of the nation’s leading computer science literacy programs, co-directed by Brown CS faculty members Shriram Krishnamurthi and Kathi Fisler (adjunct), continues to extend its reach. Bootstrap has just announced a partnership to use its approach to building systems to teach modeling in physics, an important component of the Next Generation Science Standards (NGSS). This project is a collaboration with STEMTeachersNYC, the American Association of Physics Teachers, and the American Modeling Teachers Association.
I’ve raised the concern before that the CS for All effort might mean “CS for only the rich” (see post here). Our data from Georgia suggest that few students are actually getting access to CS education, even if there is a CS teacher in the school (see post here). Kathi Fisler, Shriram Krishnamurthi, and Emmanuel Schanzer offer a Blog@CACM post where they consider how we make sure that #CS4All is equitable.
Mandating every child take a computing class is a great way to ensure everyone takes CS, but very few states, cities, or even school districts are in a position to hire enough dedicated CS teachers or offer dedicated CS classes to reach every child. Recent declarations from several major districts that “every child will learn to code” often place impossible burdens on schools. Similarly, few schools can afford to offer CS programs that require cutting-edge computers, expensive consumables, or technology that requires significant maintenance.
To truly achieve CS4All Students in a sustainable way, equity and scale are issues that must be built in by design. Similarly, initiatives have to think about differently-abled users from scratch, not just bolt them on as an afterthought. Accessibility needs to be designed into software, curriculum, and pedagogy from the earliest stages.
The “move fast and break things” culture of computing is no help here. Right now, computing education has enormous attention. That day will pass. By the time we get around to focusing on equity, we may have depleted the energy left to overhaul computing curricula. Instead, we have to think this through at the very outset. Another computing principle is that products typically get one shot at gaining users’ attention. For the foreseeable future, this is that one shot for computing education.
Top business leaders, 27 governors, urge Congress to boost computer science education – The Washington Post
I saw on Facebook that Hadi Partovi was at Congress. Now I see why — there’s an effort underway to get Congress to fund more in CS education. I’m wondering what they want to get funded. Incentives for teachers? Professional development? Pre-service education? Does someone know the details?
Despite this groundswell, three-quarters of U.S. schools do not offer meaningful computer science courses. At a time when every industry in every state is impacted by advances in computer technology, our schools should give all students the opportunity to understand how this technology works, to learn how to be creators, coders, and makers — not just consumers. Instead, what is increasingly a basic skill is only available to the lucky few, leaving most students behind, particularly students of color and girls.
How is this acceptable? America leads the world in technology. We invented the personal computer, the Internet, e-commerce, social networking, and the smartphone. This is our chance to position the next generation to participate in the new American Dream.
I’m excited by this initiative. We need to see more CS + X kinds of programs. Our Computational Media degree program has been a Computing + Digital Media program, and is wildly successful (see example post here). The challenge is to engage faculty from across campus in the initiative.
Bates last September launched a similar project, called the Digital Course Design/Redesign Initiative, for faculty members interested in adding digital and computational tools or methods to existing courses. If it becomes popular among faculty members, the initiative could help realize Bates’s plans of having interdisciplinary pathways for its digital and computational studies majors. Auer, the Bates dean, acknowledged that building those pathways is “going to require deep consultation with the faculty” — as well as some new faculty members in other departments.
Brian Drayton has now written a couple of posts critical of the CS for All initiative (one is linked below, and here’s another one), and his points are well taken. In my book on Learner-Centered Design of Computing Education, I consider several possible reasons for teaching CS to everyone. I prefer the same ones that he does, and I agree that much of the initiative is poorly justified. I do not believe that we should put CS into all schools in order to make high school graduates “job-ready” (see the White House release using that phrase).
I agree that “everyone should code” is both unrealistic and poorly justified, as it has currently been advocated. I think we could make more progress (both in expanding people’s understanding of computer science or computation, and in empowering people to adopt such knowledge as a valuable tool for growth, creativity, and employment) if we did a better job envisioning what we’d like a classroom to look like that is deeply conversant with the tools and the insights of computer science in the same way that the classroom is already deeply infused with the tools and insights of literacy and numeracy.
As I noted in my Blog@CACM post about the ECEP Cohort (see post here), some states are starting to track enrollments and sections of CS classes offered. Georgia is one of those, and I got to see the first presentation of these data at a CS Task Force meeting from Dr. Caitlin McMunn Dooley. Slides from the presentation are here.
There are five courses that currently count towards high school graduation in Georgia, and these are the ones being most closely tracked: AP CS Level A, CS Principles, IB CS Year 1, IB CS Year 2, and a Georgia-specific course, Programming Games, Apps, and Society. If you look at the counts of how many teachers are teaching of these course, it looks like good growth. There are just over 440 high schools in Georgia, so if there were one of these teachers in each high school, we could have 25-50% of Georgia high schools with CS teachers. What we don’t know is how many of these teachers are appearing in multiple categories. These are unlikely to be all unique teachers. How many AP CS teachers, for example, are also teaching CS Principles?
The data below were the most surprising to me. Georgia’s state education system is broken into 16 Regional Education Service Agencies (RESAs). We have the counts of the number of teachers of CS classes in each of those 16 RESAs, and we have the count of the number of sections of CS classes offered in each RESA. Notice that the numbers are pretty similar. For the most part, high school CS teachers in Georgia are only teaching one or two sections of CS. We have very few high school teachers who teach CS full-time. There are a few, e.g., some of our teachers who worked with us in “Georgia Computes!” were teaching five sections of CS each day. Most Georgia CS teachers are likely teaching some other discipline most of the time, and offering just a couple sections of CS.
If our goal is for all high school students to have access to CS education, we need to have more than one section of 30-40 students per teacher or per school (which is roughly the same thing right now). We need more teachers offering a section of CS and/or we need each teacher to offer more sections of CS. Right now, too few teachers offer CS to too few students.
I don’t know how common these trends are nationwide. Few states are tracking CS classes yet. Georgia is one of the leading states measuring progress in CS education. We need more information to know what’s going on.