Block-based Programming in Computer Science Classrooms
This week’s post features David Weintrop and his research on block-based programming. He shares three key points his research has discovered so far.
The first time I saw Scratch, I thought, “Wow! How clever! Is this the end of missing semi-colons errors!?” It was clear to me how the shape of the blocks, their easily understood behaviors, and the Sprites they controlled all worked together to make programming more accessible and inviting.
With my background in computer science, I could also see how foundational programming concepts were also present. I started with Scratch but then discovered a whole host of other environments, like Snap!, MIT AppInventor, Pencil Code, and Alice, that used a similar block-based approach. This got me thinking – do kids learning computer science with block-based tools? Should it be used in the Classroom? If so, what is the role of the Teacher? And finally, will block-based help kids learn text-based programming languages like Java and Python? My research seeks to try and answer these questions. Here is a bit of what I have found.
Kids think block-based programming is easier than text-based programming.
As part of my research on block-based programming in K-12 classrooms, I asked students what they thought about block-based programming. For the most part, students perceived block-based programming to be easier than text-based programming. They cited features such as the “browsability” of available commands, the blocks being easier to read than text-based programming, and the shape and visual layout of the blocks. It is also worth noting that some students viewed block-based programming as inauthentic and less powerful than text-based programming.
Kids do learn programming concepts with block-based tools.
My research found that students do in fact learn programming constructs when using a block-based tool. In fact, students who learned to program using a block-based tool scored higher on programming assessments compared to students who learned with a comparable text-based tool. I found a similar result in a different study looking at the AP Computer Science Principles (CSP) exam, which asked students questions in block-based and text-based pseudocode.
Block-based programming may help kids learn text-based languages, but it is not automatic.
I also investigated the transition from block-based to text-based programming in high school computer science classrooms. I found that there was no difference in student performance in learning text-based programming based on prior experience with block-based or text-based programming. In other words, students performed the same regardless of how they had learned programming up to that point. One thing to note is that in my study, the teacher provided no explicit supports to help students make connections between their block-based experience and the text-based language. I mention this only to say that there is still research to be done into how best to support the blocks-to-text transition.
Overall, my research is finding that block-based programming should have a role in K-12 computer science education. While there is still work to be done, what we know so far suggests that block-based programming can serve as an effective introduction to the field of computer science.
David Weintrop is an Assistant Professor in the Department of Teaching & Learning, Policy & Leadership in the College of Education with a joint appointment in the College of Information Studies at the University of Maryland. His research focuses on the design, implementation, and evaluation of accessible, engaging, and equitable computational learning experiences. His work lies at the intersection of design, computational science education, and the learning sciences. David has a Ph.D. in the Learning Sciences from Northwestern University and a B.S. in Computer Science from the University of Michigan.