Saturday, September 21, 2013

Mediating Differences in Computing Skills in the same Classroom

I just came across Ross Penman's post on the problems of computing education. Ross is a 14-year old web programmer from Scotland. His description of his school's computing curriculum is depressing, particularly the descriptions of the various ways in which it inadvertantly turns students off from computing. These ways include the impact of old software and technologies that yield inferior-looking products (in the web-design or video-production spaces) and programming tools with low ceilings (in this case, Scratch), which aren't able to hold the interest of students who grok programming and want to do more with it, faster.

The latter point particularly got to me. In our drive to providing computing education for most students (a good thing), we can't afford to alienate the students who will actually be good at it. Many comments on his post are from professional programmers advising him on how to learn on his own. That's reasonable advice for a student with Ross' abilities to teach himself, but it completely misses the point: what do you do for the students who have similar potential to Ross, but not the confidence, drive, or established interest to do this on their own? Our curricula need to engage and foster them!

A key part of the problem here is how to gracefully handle the wide variation in both teacher and student abilities in computing: variation in student abilities is wide, the knowledge gap between some students and their computing teachers is also wide. How do we enable teachers to work with such a wide-ranging class, including students who are more comfortable (or skilled) than the teachers?

Teachers need curricula that they can use on an entire class, but that (a) accommodate a wide range of student abilities, and (b) are sufficiently within the teacher's comfort zone to be usable. The community seldom talks about (b), but we can't ignore its impact on adoption and effectiveness of computing education.

Our current standard early-programming solutions, such as Scratch and many of the other drag-and-drop tools, are too far skewed to the lower-middle end of (a) while achieving (b). The problem isn't drag-and-drop per-se, but the limitations of the languages and tools that get created around drag-and-drop.

What if we had a curriculum (with language, software, materials, etc) that provided a simple, beginner-friendly approach to writing basic programs, but that scaled---within the same framework and tools---to more sophisticated programs that exercised more advanced computer science concepts? Teachers could focus on learning to teach the core framework; most students could learn computing at the level of the basic programs, but students who are doing well could go forward without having to go off entirely on their own (and staying within the realm of what the teacher recognizes, for various benefits).

Program by Design (PbD), which we have worked on for 20 years, was designed for the sort of smooth ramp-up that accommodates learners at all levels. The world-programming infrastructure within PbD developed the basic framework of programming animations, websites, and other reactive systems using a small set of constructs. Bootstrap adapts animations programming in world to the needs of middle-schoolers and teachers who are new to computing. In this ecosystem, a teacher can cover the core world-programming framework with the entire class. Interested students can get into more advanced computing concepts by creating animations with richer features (multiple similar characters to get into lists, etc). But these advanced students are still in the tools and approach that the teacher knows, which makes for a smoother curricular experience all around.

Some of our papers describe the underlying model, tools, and curricula. There are some rough spots to the way we've packaged these curricula in the past, which we are actively working on. But the fundamental idea and inspiration remains: our challenge as computing educators is to create tools that (a) accommodate a wide range of student abilities, and (b) are sufficiently within the teacher's comfort zone to be usable. We hope others will join us in trying to meet this challenge.