Making Computer Science Sticky
“Sticky” is much more than “fun”.
This summer, I have two goals in teaching a 5 week intro computer science class to high school students:
- Get them excited about coding by connecting it to their real lives
- Do it without grading; formative feedback instead
I set these goals because I know that introductory computer science can be scary and I wanted this class to be the antithesis of scary (i.e. sticky), so that perhaps students would leave the class wanting to keep coding.
Connecting computer science to their real lives
Often in computer science, we think that if students have fun, they will stick with it, so we give them open-ended projects where they can build anything they want. Students make all sorts of stuff and some of them go on to keep coding, but many do not. This is because having fun isn’t enough.
How many times have you done something that was fun, like a new sport or trying a new app or game, but never came back to it again? Temple Run, for example, is super fun, but I don’t play it everyday or even every week because it didn’t matter enough in my life to be something I make time for. Whereas Facebook and Pinterest are apps that I come back to much more regularly because they serve a more meaningful purpose. Facebook connects me to my friends and all of their amazing lives. Pinterest connects me to a treasure trove of incredible pictures and ideas.
When we design projects and experiences in computer science, we need to make them similarly “sticky” for students. Being fun isn’t sticky enough. People who have traditionally stuck with computer science or who stick with it after a “fun” class do so because they were already someone who liked being on the computer, who liked puzzles and challenges, and who had been successful in math or science, so coding fits into who they already were. If that’s not you, coding doesn’t stick.
For my students, all of whom are people of color, I wanted to connect technology to their cultures and lived experiences. In a year when blacks and Latinos have been constantly under attack, the work they did needed to connect to their worries and thoughts from hearing all of this news. How could they bring about positive change to their communities through coding? How could they share their cultures with others through their projects? How could they bring more authentic stories of people of color to the world through technology like Chimamanda Ngozi Adichie does in her writing? If I couldn’t answer these questions, I knew from experience that for many students, computer science wouldn’t matter and wouldn’t stick.
While there are other topics that might’ve connected with my students and while this focus might not connect with your students, I knew that this would be front of mind for my kids this summer. To get our feet wet in culturally relevant technology, we talked about a few great examples, like:
- how Pigeonly was created by a black man to make it easier for families to find and stay connected with their relatives who are in prison
- how Beyonce’s 2011 Billboard Awards performance highlighted how R&B, an important musical style in the black community, can be intersected with technology in an engaging way
- how this Dora the Explorer game engages young children in fun adventures while also teaching them Spanish
What are their projects?
They are making interactive storybooks, animations and video games that empower other people of color and share with the world what makes them and their cultures awesome.
- One young man is making a video game for young black men to practice interacting with the police in order to stay alive.
- Another group is making an interactive piano that plays their favorite music from black and Latino cultures around the world.
- Another student is making an animation with all of his own drawings to tell a story his grandmother told him growing up.
The hope is that through these experiences they’ll see how computer science connects to things that are important in their lives, things they do and talk about all of the time. I also know that by being able to incorporate their own drawings, music and creativity, they can see more clearly how computer science can connect to their other interests and talents because they’re incorporating them at every step of the design process.
Feedback instead of grading
Because this work is for them to learn how to code and create something new, not for them to make something to please me as their teacher, there’s no grading. Instead, I give them (almost daily) feedback in the following five areas. You’ll notice that none of them evaluate how well they’ve mastered a particular concept. Computer programs offer immediate feedback on skills like how well you write loops (i.e. either it keeps going or it doesn’t), so these outcomes are all areas where they need feedback from a real person.
How you interact with and collaborate with your partner, and how you handle disagreements. Do you work by yourself never collaborating with others or do you value the opinions of others alongside your own?
How easy your code is to understand. Is your code filled with nonsensical variable names and overly repeated code, or are you using meaningful variable names and using loops and methods appropriately?
How you handle getting stuck or confused. Do you say “Help I’m stuck” or do you ask well-framed questions like “I’m trying to figure out <this problem>, can you take a look at this part of my code to help me figure out what to try next?
How well you communicate questions, ideas, and thoughts. Do you dominate the class conversation, mumble the few times you speak, or actively participate while giving others time to speak as well?
How willing you are to challenge yourself and others. Do you do just enough work to get by or do you push yourself and others to try something new even when you’re not yet sure how you’ll do it?
At the start of the summer, I shared these outcomes with students along with a rubric outlining what good, better and best work would look like in each of these areas. I didn’t expect students to, for example, know what good code quality would look like at the start of the summer. Instead, the goal was for students to show growth in each of the areas over the course of the summer.
To get a baseline, students self-evaluated on the first day and each week, they do a brief self evaluation providing evidence of where they see themselves along the rubric as the summer progresses. Over the weekend, I respond to their self evaluations with something like, “I totally agree, you’re doing great”, “I totally agree, you need to work on that” or “Huh? I’d like to see you work on this…” in 2–4 sentences. Throughout the week, I give students formative feedback in the moment about how I see their work and behavior. It’s all very positive and has led to quick, risk free improvements for students.
In-the-moment feedback in action
For example, today, a student sighed loudly and exclaimed, “I just don’t get what we’re doing…..” I asked her what exactly she was working on and what her question was. She said, “I’m just so lost. I have no clue what we’re supposed to be doing”.
Internally, I gave her the side eye. She had been working well with a friend for most of the class and had confidently completed all of the work so far on our current project, so I doubted that she was “so lost”. I realized that in order to figure out what was going on, she needed some feedback on Troubleshooting and Communication.
I reminded her of our class outcomes, saying, “Do you remember on the first day when I explained our course outcomes? (Yes, she nodded her head) Two of them were troubleshooting and communication. Remember how we talked about what to do when you get stuck? That just saying you’re stuck doesn’t help me help you because I don’t really know what’s wrong. That instead you should tell me specifically what you’re working on, what you’ve tried and where you’d like some guidance. Like, ‘I’m trying to map out a storyboard for my interactive storybook but I’m not sure how to show what happens next because the user has several options on where to click in this screen. Can you help me understand how to represent that in a storyboard?’”
She started at me like I had two heads and didn’t say anything, so I asked, “Does that make sense?” She nodded yes, so I asked, “With that in mind, can you ask me a specific question about where you’re stuck on your project right now? Take a minute to think about your work if you need it.” She took a deep breath, looked back over her notes and code, and then proceeded to ask a much better question. As it turned out, she, of course, wasn’t completely lost but just didn’t understand how to have multiple inputs to a method and got frustrated, which led to her outburst.
As we wrapped up our conversation, I said, “That was a much better question. It really helped to understand where you needed help and we could jump right to that. So, next time, can you come with a clear question in mind when you need help instead of saying you’re stuck?” She nods yes and goes back to work.
This quick, bite sized feedback also works in teaching students key programming skills. Some call it “just in time learning”. I’ve used it to explain how to define variables, how to write methods, and how to use loops instead of hard-coding values in conversations with individual students and small groups long before the concepts came up in lessons. But more on that later…
This summer I’m hoping to post an article roughly each week about interesting discoveries, insights, and experiments from my class and graduate work in Education at Stanford University.
Follow me on Twitter: @MikalaStreeter
Find me online: mikalastreeter.com
Follow my Medium publication: The Re-Education