Investing In CS4All: Training Teachers and Helping Them Build Curricula
[Update: This story now continues in Investing in CS4All: One Year Later].
Until last year, Jeremy Mellema was a history teacher. Now, he's teaching computer programming. When I visited his class in the Bronx this month, he had 30 students with 30 MacBooks, completing exercises in Python. They had just finished a lesson on data types, and now they were tackling variables. In Jeremy's class, the first variable assignment is:
tupac = "Greatest of All Time!!"
Computer Science for All
A year ago, New York City mayor Bill de Blasio announced Computer Science for All, an $80 million public-private partnership. The goal is to teach computer science to every student at every public school. But first, the schools need curricula and 5000 teachers need training.
Here at MongoDB, our VP of Education Shannon Bradshaw oversees MongoDB University, which trains IT professionals to use MongoDB. When he heard about CS4All, he wanted us to contribute. He proposed that we set aside budget for two paid fellowships, and recruit public school teachers to spend the summer with us. We would develop them as teachers, and help build curricula they could take back into schools this fall. MongoDB staff would share our expertise, our office space, our equipment, and the MongoDB software itself.
Shannon pitched his proposal to the company like this: "As many of us know, it’s still unusual for students to encounter computer science, let alone databases, in their classrooms before entering college. I believe this absence directly contributes to the gender and racial disparity we see today across our industry." The CS4All project improves access to these subjects for many more students in our city, and MongoDB could be part of it from the beginning.
Jeremy joined us this summer to meet software engineers and learn to code more like a professional. His presence is particularly valuable because he's not a specialist: he'll ensure the curriculum he builds can be taught by other teachers who aren't already coders. Shannon assigned him the book How to Think Like a Computer Scientist , and he spent the summer turning its contents into something high schoolers can learn from. He told me, "I was excited to actually get my hands dirty with what it means to be a programmer and learn how to do things besides basic Scratch programming, drag and drop, and to see how you actually use it in the real world."
Back to School
Now that school is back in session, I'm watching Tim and Jeremy's progress with fascination. Their students come to CS from a different angle than I did: I have the typical background of a computer programmer in this country, with college-educated parents and all the privileges that typically pave the way to a career in software. I taught myself to code in high school and got a Bachelor's in CS from Oberlin College. But the students in Tim and Jeremy's classes nearly all come from low-income families and qualify for federal meal assistance. These students have self-selected into the computer track, and they are mostly boys; but there are a half-dozen girls in both classes. The majority are Black or Hispanic, and Jeremy's class also includes many recent immigrants from the Carribbean and Bangladesh. If young people like them succeed as software engineers, it will go a long way to addressing the inequalities of our industry and our society as a whole.
But the goal for Tim and Jeremy this year is more modest. They will prove and refine their curricula in their classrooms; then the materials can be used by any teacher in the New York City public schools. I visited their classes to watch their plans being put to the test.
The Bronx: Jeremy's Class
When I saw Jeremy at Bronx Compass High School, he'd had the students for one week. He was nervous the month before about how class would go: "I’m always afraid it’s going to bomb, or the students won’t find it interesting." But the kids were hacking enthusiastically. Watching them reminded me of my own joy when I first learned to code.
Class time is spent working independently while Jeremy checks in with each student. The kids present a huge range of skills: some have taken computer science classes for several years, and others have just moved to New York and are getting their first exposure to CS. Jeremy worries about challenging all his students according to their level.
An advanced student, Tatyana, is able to use this wide skill range to make the class more effective for the novice students. I noticed her sitting sideways in her chair so she could coach the students to her side and behind her. "It's nice to help people who struggle with coding because it's like a mixture of math and grammar,” she said. “When you write 'print', if you write it with a capital P your code won't work. It's like teaching them a new language." Tatyana plans to keep coding after high school: "I like making things work the way I want them to work."
Since my formal CS education began in college, I've never sat in a high school programming class. To my surprise, 30 students can be trusted to stay on task, even when they're on laptops with the whole Internet in reach. Jeremy doesn't mind when they take detours to the Web. He said, "If they just need YouTube to play music to drown out their classmates that's fine." I saw his student Amaury with headphones on and YouTube playing in the background in order to concentrate, the same way I use music at the MongoDB office. Jeremy gives him space to work in his own style: "It's fine. As soon as I ask Amaury a question, his headphones are off and he answers."
I asked Amaury to take off his headphones for a minute and tell me how the class was going. "It's cool learning how a computer works using just a bunch of freaking inputs. Put in a couple lines of code and you can have the computer do crazy stuff." Then his headphones went back on and he got back to hacking.
By the end of this year, Jeremy hopes his kids will advance from sandboxed programming environments to real-world tools—that they'll install Python on their computers and code on their own. "The kids I’ve seen really do well,” he said, “this will open the door for them to take the world by storm. There’s a lot of really smart and talented kids who are not in an advantaged place. This will put them at an advantage."
Hell's Kitchen: Tim's Class
When I asked Tim how his curriculum performed in its first week, he said there'd been no surprises yet—but he's still in the process of writing it. Only the first semester's material is complete. "My greatest fear is that they’ll move faster than I can create it," he said. Still, he expects his students to be forgiving if they hit any bumps. "I told them this is my first year trying this out, so we're going to try things, and if it doesn't work out we're going to try different things. They're cool with it."
Time to Scale Up
Teaching one class in Hell's Kitchen and one in the Bronx is only the start. Tim wants to create a curriculum that any teacher can pick up and deliver to their students. Jeremy has the same goal, and because of his background as a history teacher, rather than a computer scientist, he is focused on making his course effective for teachers like him.
For Shannon, this teacher-training is the most unexpected, and the most inspiring, aspect of our involvement. "Most of the people who will teach computer science in the New York City public schools are transitioning from another discipline,” he said. “They’re never going to be hardcore software engineers. They’re professional teachers; that’s what they want to do." But in nine years, computer science will be a core class in New York City, and the existing staff will have to teach it. "If we can contribute to figuring that out, how to make this transition as effective as possible for computing education in New York City, then we’ve gone miles beyond where I imagined us going."