You Belong Here: How we Build Community in CS
For every student to succeed, CS can't just be another class: it needs to feel like a team.
Unlike my students, I did not have the pleasure of taking computer science in high school. My school had just one CS class, taught in the basement under the main classroom building, in the computer lab (do schools even have those anymore?).
Why didn’t I take that course? Clearly, I would have loved it. I fell in love with programming shortly after high school, majored in CS, and now spend eight hours every day sharing that same love with teenagers. There is no doubt in my mind that the material would have grabbed me.
I didn’t take the class because, well, it wasn’t the thing to do. Reviews from other students were mixed: the CS teacher hadn’t been at the school very long. The class was “okay” at best. The projects were “pretty cool but nothing special.” On top of that, the class had a type: nerdy upperclassmen boys. Despite fitting squarely into that demographic, the prospect of a homogenous class didn’t really appeal to me.
Now I’m on the other side. As the CS teacher, it’s now my job to develop the culture of the course and its reputation about the school. My dream is to create a culture that would have drawn me in, as well as every other student at my school.
How do you get to that point? What can a teacher do to make their class a must-take course—an elective that you’d be silly to miss out on before you graduate?
At my current school, my colleagues and I started with this question: what makes students engage with Computer Science? There were many routes to explore, but we focused on one fundamental belief (and one that has been proven experimentally, to some extent): that students engage with STEM at a deeper level when they feel like they are part of a social group.1
This, it turns out, was the key to building a culture of belonging in our classes. After implementing a number of different strategies to create community, we saw enrollment increase—especially among students who thought they never would have taken CS. Furthermore, we noted a shift in classroom dynamic, including greater student participation and collaboration. And, while it is still a work in progress, we found a few strategies that develop a culture of community and trust that make CS a must-take course.
🏫 Curriculum & Context:
I teach at a private school in Silicon Valley, so I have been blessed with a community that believes in CS. My school has invested heavily in CS over the years, so by the time I was hired in 2019, there was a three-course track in place for students to truly embrace Computer Science.
This project focused on the first course in our sequence, which is called CS1. It’s a yearlong course for all students who have not yet taken a CS class at our school. It is a competency-based, pass-fail course that teaches the foundational and enduring ways of thinking like a computer scientist. Students work in Scratch, C, and python by completing about 30 programming challenges. Most of these programs come from the first seven weeks of CS50 (including problems from past years), but we have added some of our own as well.
We usually have four or five sections of the course. Two teachers usually split the teaching load. Here are the enrollment numbers in the years leading up to our research, which began in the 2021-2022 school year:
It is important to note that CS at my school has shifted tremendously in the last five years. We overhauled the introductory class, completely changing the curriculum and nature of the course. Additionally, the entire team has changed—none of the four CS teachers from the 2018-2019 school year remain. I was hired in 2019, and my three colleagues we hired in the two years that followed.
🏗️ The Moves we Make to Build Community
You can’t skip CS1.
We used to have a math requirement for our first CS course: if a student was a 9th-grader, they needed to be enrolled in an honors-level math class. It is my understanding that this requirement was put in place to ensure that all students had the capacity to succeed in CS1. However, we suspected that it would be difficult for us to build community when it was predicated on a student’s math placement. Additionally, we worried that this would discourage 9th graders who didn’t see themselves as “math people.” We were also curious to see which types of students—perhaps more girls? More 9th graders? More students of color?—would elect to take the course when we removed the math requirement.
On top of this, we began enforcing CS1 as the mandatory prerequisite for AP Computer Science. In the past, students with outside experience could jump straight into AP. However, we wanted to create a sense of camaraderie in CS1 — we wanted it to feel like everyone was in it together. So, except in extraordinary circumstances2, we began enforcing CS1 as the first CS class for all students.
To support all students in CS1, we had to adapt our curriculum and structures to support a wider range of students. I will write about this more extensively in a future post.
Mantras
On day 1 of the course, we tell our students:
You are smart. You are resourceful. You belong here.
And then we ask them to repeat these words:
I am smart. I am resourceful. I belong here.
The students usually groan and mumble at first. Some of them think it’s awkward, I’m sure. But I spin around the room like an unstoppable satellite of optimism, so it doesn’t take too long to get the students to say these words together.
And we continue to repeat this mantra periodically throughout the course. Some days we end class by saying it together. Sometimes we ask students to say these words before they begin a tricky program or a tough quiz. But, most of the time, they come up authentically. As the year progresses, there are even times when I can coax the mantra out of my students. I will often have interactions that go like this:
Student: Okay, thanks for the help, I’m good to go.
Me: Yes, you are, and you know why?
Student: [quizzically] Why?
Me: Because you’re smart, you’re resourceful, and….?
Student: I belong here.
Puzzle Day
Communities don’t form from nothing: they need things to do together! For this reason, we run a puzzle day on campus very early in the year, usually on Friday evening after the third week of the course. This event challenges students to solve a number of fun riddles and puzzles in teams.
While we advertise that there will be prizes for the winners, we tend to gloss over competitive component at the event. We provide pizza and drinks for the students, as well as some festive décor (and a photo booth!). We tell CS1 students it’s mandatory, but, like the course, we do everything we can to make it seem like the students will be missing out if they don’t go.
Co-created norms
A few days into the class, we build norms together. We first have students play some games that emphasize good collaboration. Then, after debriefing those games—and discussing what good collaboration looks like—we ask our students, What class rules do you think will encourage good collaboration? You would be surprised how reasonable the students are! Here are the rules we co-created last year:
TAs
Peer support is the backbone of CS1. To supplement the office hours that we offer, we have a team of TAs who run extra help sessions in the evenings. These sessions, offered via zoom, give students another route to find someone they can trust with their questions. I’ll describe our peer support system in depth in a later post!
Rubber Ducks
Teams need mascots, and CS1 is no exception. From the first day of the course, students quickly catch on to the omnipresence of the rubber duck3. They seem to appear everywhere: I feature them in my slides. They appear in examples. I use one as a conch—the speaking duck—when facilitating discussions.
As the course progresses, students eventually get their own ducks (naming is encouraged). And, on the very last day of the course, our students each get their own CS1 duck sticker to celebrate the completion of the course.
Food!
Honestly, there’s not much to say here. Food builds community. I have a mini-fridge in my classroom, and I periodically stock it with juice boxes and chocolate milk. I’ll bring in crackers or banana bread for the students as well. I’ve never had leftovers.
Fortune Cookies
This was a particularly lovely idea from my colleague, Douglas Kiang. One day, we told our students we had a gift for them. We passed around a yellow bag, from which the students each pulled out a fortune cookie! I told my students to enjoy their treat whenever they needed it. And, upon cracking open their cookie, they found one of three fortunes:
Feedback & Grading
It has been shown at the university level that more students—especially girls—choose to enroll in an intro CS class when the class is Pass/Fail by default4. We were curious to see how this would affect our enrollment, as well as the effort and stress felt by our students. The results were amazing! I will write about this in a forthcoming post.
Share Fair
As we approach the end of the year, all CS students—from CS1 to our most advanced course—present a final independent project. This happens at the Share Fair, a festive evening of sharing and celebration. On the Friday evening just a few weeks before the term ends, we pack the gym with tables, streamers, balloons, and more. The students take shifts staffing the tables, sharing their project with their peers, parents, teachers, and friends.
Certificates
One the final day of the course, we hold a CS1 graduation. On this day, I say a heartfelt compliment for each student, then invite them up to accept their CS1 diploma. After taking a picture together, I offer a brief, quaker-style moment for any other student in the room to appreciate their peer. Without fail, every student gets a shoutout. In fact, last year, my students took over at the end of the ceremony to continue appreciating each other (and even appreciating me, too!).
🔎 Major Findings:
So, what happened as a result of our community-creating experiment? We noticed a few things:
Sign-ups for CS1 increased. We have seen an increase in signups by about 25% relative to a baseline from five years ago. I expect there to be some volatility in sign-ups each year, but this is a significant increase. So, what kind of student is signing up now who would not have signed up before? We did some surveys on the topic, and the results seem to indicate an increase in the number of students who have never taken programming classes before. We also have seen a big increase in the number of 9th graders in the course. We believe this may also be a result of the work we have done to make the course pass/fail, which I will describe in a later post.
There is more camaraderie than before, especially among 9th and 10th graders. This one seems obvious, but it’s significant to see nonetheless. After implementing these methods, our students show a greater enthusiasm for the class and towards each other. We have begun to see social groups spilling over from CS1 into the 9th grade quad. One student—who didn’t take CS1—put it best:
I wish I’d taken CS1 this year. It’s the best place to make friends when you’re a freshman. You’re missing out if you’re not in CS1.
While we have seen more girls sign up for CS1, our gender split through the years has remained constant—so far. We were hoping to see more girls signing up for CS1, and they are. But the percentage of girls still sits at about 40%. I hope this changes as the reputation of CS1 grows throughout the school. We continue to tackle this issue from many directions: recently, we edited our course descriptions to be more welcoming to novice programmers. I’m curious to see if this affects the percentage as well.
It seems like more girls are sticking with CS. Each year, I compare the number of girls signing up for our intermediate CS classes to the number of girls in CS1. This year, we saw an increase by 20% relative to the year before. I’m convinced the community-building in CS1 has something to do with this.
🧐 Questions on my mind
I’m convinced that these practices are valuable, even if the effects on enrollment are mixed. Simply put, the class is more fun—for me and for the students. But I wonder…
What other practices would you mix in to build community?
What other research on motivation and engagement in STEM classrooms should my colleagues and I be aware of?
What was the must-take class at your school? Why did it have that reputation?
Master, A., Cheryan, S., & Meltzoff, A. N. (2017). Social group membership increases STEM engagement among preschoolers. Developmental Psychology, 53, 201–206.
Once or twice a year, I will approve a senior with significant programming experience to advance into one of our upper-level CS courses. This is to preserve their motivation and interest in CS. We figured it would affect the sense of community in CS1, as most CS1 students are in 9th or 10th grade.
Why the duck? Because encourage our students to practice rubber duck debugging!
David J. Malan. 2021. Toward an Ungraded CS50. In Proceedings of the 52nd ACM Technical Symposium on Computer Science Education (SIGCSE ’21), March 13–20, 2021, Virtual Event, USA. ACM, New York, NY, USA, 6 pages. https://doi.org/10.1145/3408877.3432461
Well done, dude! The moment I started thinking of my classes as teams and support groups was the moment my teaching really started to click. Especially in STEM, we need collaboration both for the immediate learning process as well as developing the ability to communicate in future settings and with unfamiliar groups. You’re doing great things, my friend! Good luck this year!
Fantastic read - a good exposition on the curriculum and programming. I'm glad to hear things are looking up at Menlo CS!