Deepening reading engagement to support confidence in problem solving
Students often have misconceptions about Computer Science (CS) as a subject around who can be successful at it and who can’t. My school starts CS education as early as 6th grade and by the time I see them in class as 9th or 10th graders, many of them have solidified either negative or positive feelings about programming. I’ve noticed this show up in the different ways students engage with the problems I ask them to solve. Some are immediately confident when tackling abstract questions, while others shy away and freeze when asked to give an idea regardless of whether it’s correct or incorrect. For many of my students, just taking the step to get started on a CS task can be very scary.
I took these observations into my Computer Science inquiry group and through conversation with colleagues, landed on my big question of the year: How can I support students to feel ready, prepared and confident to begin a programming task – not necessarily solve it, or solve it correctly, but just to begin? I had a hunch that students’ ability to jump into and begin solving a problem is connected to whether they feel successful or not in CS.
Through interviews with focal students, I learned that many of my students have a hard time comprehending the directions that I provide them at the beginning of each programming task. Although I’m sure my directions are far from perfect, these interviews suggested that many of my students never actually took the time to read through the steps that I constructed. Shocked by this revelation, I began to think of ways that I could both teach and incentivize the completion of this incredibly important first step.
Through a year of observing and listening to my students, talking to colleagues, and trying new strategies, I have converged on a couple of teaching strategies that seem to help the students who need extra support.
- Take the time to have a whole class conversation around the problem statement itself. Something I noticed when observing my students who were independently successful is that they could deconstruct what was being asked of them in the problem. I decided to teach this to the whole class. Before asking students to dig into the problem on their own, we discussed as a class the key terms and background information, and connected the question to previous learning. This practice has led to a much higher success rate in students being able to solve problems on their own.
- Interval training. In order to take the pressure off of the end product, I have changed my grading practices to focus more on the process skills. Students earn points when they suggest something to add or change to a program we are writing together, or when they ask a specific question about what something does or why we did something. In providing these options to engage, my students have begun to feel more comfortable and confident expressing their thoughts about code.
These changes in my practice have impacted student learning dramatically. Now, most students who engage in this process can complete problems on time and feel more successful. Overall, students are feeling better about their work and producing better solutions.
Toward the end of the school year, I had one more conversation with my focal students to see how they felt about all the systems that we had tried over the year. We largely focused on interval training; they liked that I eventually included the opportunity to earn points by asking questions because it ultimately made them feel safer to speak up even when they were unsure. This was an important noticing for me because it highlighted the need to find ways for all students to feel like they are contributing to the collective knowledge of the class. In their eyes, peer-based recognition is essential in building their confidence as successful CS students.
As I move into a new school year, some new questions propel me forward. How can I support my students towards more independence? Perhaps I could start examining what success looks like within small groups, then pairs, then individually. There’s still value in full class work but what does it take to move from full class to independent work? The scaffolds that I have set up work for my students, but does it translate to the technical aptitude I’m looking for? How much scaffolding is enough? How do I continue to build confidence in my less confident students when so much of that feels embedded in experiences out of my control?
Bio: Sonia Spindt is a high school computer science teacher in Oakland, California. She began teaching CS in 2015, right when Oakland Unified joined the #CSForAll movement. Before she stepped into the classroom, she was a staff research scientist at UCSF, where she predominantly used her programming skills to analyze biological datasets. It was eye-opening for her to see the broad need for computing skills, and even more eye-opening to realize that few were learning about these technical skills outside of formal computer science degree programs.
Motivated to help further diversify the field of computer science, she joined Teach for America, where she began teaching Web Development, AP Computer Science Principles, and AP Computer Science A. Here, Sonia is constantly inspired by her students and is excited to continue empowering them to explore STEM fields and careers. She loves to travel when she can and believes the best way to experience a new culture is through food!