Investing In CS4All: Training Teachers and Helping Them Build Curricula
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.
The teachers we hired for the summer are at opposite ends of a spectrum. At the more technical end is Tim Chen. He majored in Math and took some CS classes in college. When he applied to work for the NYC Department of Education, there was a job opening for a Tech Teacher. "I didn’t know what 'tech' meant at the time,” he said, “but I lucked out because it was teaching really basic software engineering." His first year teaching, he taught the 9th grade curriculum for the Software Engineering Program. Now, he's an experienced CS teacher, and his students this fall are comparatively advanced programmers. He spent his summer at MongoDB outlining an ambitious two-year curriculum in Python and Javascript.

Jeremy Mellema, on the other hand, was teaching 10th grade world history when he was tapped to teach a CS class last year. He took an intensive training with the NYC Department of Education's Software Engineering Program, where he spent a day apiece working in Python, HTML, CSS, JavaScript, Scratch, and Arduino. That fall was a struggle. "It was pretty overwhelming," he said. Jeremy is a skilled teacher, but on the topic of software, he "just didn’t know a whole lot."
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
.jpeg?auto=format%252Ccompress)
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

Tim Chen teaches a few blocks from the MongoDB office, at Urban Assembly Gateway School for Technology on the west side of Manhattan. His students have specialized in CS more than Jeremy's, and he has more time with them: 45 minutes a day, 5 days a week. His curriculum is accordingly more ambitious. This year he's teaching introductory programming in Python, aligned with the upcoming version of the Advanced Placement test in Computer Science Principles. Beginning with Python makes entry to the subject easy for Tim's students, but by the end of the year they'll cover nearly every topic of a first semester college class. Next year they’ll switch to Javascript. They'll build web applications with MongoDB, Express, and Node. These three technologies (along with Angular.js) make up the famous MEAN Stack, which Tim learned this summer from MongoDB University.

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."