Aug 15, 2012

Instructional Resources in Programming

Khan Academy's new computer science platform is a refreshing deviation from the lecture-based curriculum resources previously offered by Khan, and has the potential to further encourage the exploration of programming as a tool for teaching creative problem solving.

Khan Academy just unleashed a new computer science platform. As somewhat of a KA skeptic, I have to admit that I was doubtful when I got the news, but on first glance it seems like this thing totally rocks. Before I get into the thick of some thoughts I've been having about instructional videos and programming, let me identify a few things that they're getting right in a most beautiful way:

• The platform is elegantly constructed, and allows for instantaneous feedback on how a change in the code has changed the behavior of the program. (...and the sliders on numerical values are awesome!)

• The activities are almost completely open-ended. Users are free to mess around with the existing program in any way that that want, or to start their own program fresh. Some of the benefits of this approach are outlined in a manifesto/blog post by KA Javascript-dude John Resig.

• Instructional narration is left off most videos. When narration is included, it's entirely optional unobtrusive for those inclined toward a more playful approach. Also, the narrator of the videos is a woman - isn't it about time we razed this CS boys' club to the ground?

I've suggested before on this blog that programming can be an ideal environment for problem solving. A programming environment offers explicit connections between cause and effect, provided the programmer is able to navigate a ruthlessly picky syntactical landscape. In other words, to succeed at programming, a student needs to both become familiar with the details of the language AND apply this language conceptually in creative ways to solve problems. The role of instructional videos in the pedagogical balance of concepts and processes is hazy, but this latest resource hits closer to the mark than anything I've seen from KA.

I found myself thinking about this balance a few months ago, when I made a few instructional videos about programming in Python. In the following video, I've tried to provide instruction on some commands required to code a "guessing game" (specifically, the use of the conditional statements if and while), but withhold some details that are necessary for completing the task. In making the video, I remember struggling with the puzzle of where to draw the line between giving student the support they need to go forward and leaving some freedom to explore the programming challenge as an outlet for creative thinking:

Rather than demonstrating outright how to complete the task, my goal was to provide what a student might need to get started programming and troubleshooting. I tried to provide a concrete foundation for why the basic design of the program is valid, and to model good programming behavior in my presentation. (For example, I put the program together in small chunks, frequently testing the individual chunks to confirm that they did what I expected them to do, and I consulted the internet for the answer to a specific question about Python syntax.) It was interesting to me to compare my video to the new KA tutorial on if statements, since the KA tutorial does some things much more effectively than mine. For example, the KA tutorial targets the if command explicitly, making it a more efficient resource than my own somewhat rambling contribution.. More importantly, the KA tutorial introduces the NEED for an if statement before the introducing the command itself. This seems similar to the Modeling Instruction tenet of introducing and defining a concept before giving it a name.

Some time ago, a math teacher in New York City created this excellent video, called "What if Khan Academy was made in Japan?" to contrast KA's "Watch. Practice. Learn." approach with a more effective "Struggle. Struggle. Learn." approach. That is, in countries like Japan and Finland, where math education programs are more successful than most programs in the US, students spend most of their class time working through difficult problems, rather than being told how to solve such problems by their teacher. At the end of the video, we're given an example of what a more effective instructional video might look like.

The main takeaway from this video is that learning takes place when students struggle with questions, not when they sit through an answer. While it's clear that instructional videos are useful for absorbing procedures, they have questionable value as tools for facilitating real conceptual learning, and for this reason most of Khan Academy still stands at odds with inquiry education. Drawing a line between concepts and processes is perhaps easier in programming than in math, but the KA Computer Science platform is a refreshing change, even from previous KA programming resources.

One hugely promising feature of the new KACS platform is that there aren't really any questions and answers to begin with, so it's up to the users of the site (teachers and students alike) to decide how to direct this sandbox experience. In the spirit of guided inquiry, I can imagine a series of "mod prompts" designed to identify unique or significant elements of the code. For example, in an assignment based on this cool little KA program that draws a radar screen from ellipses and lines in a rotating reference frame, a teacher could assign various challenges,* from "Change this program so that rotating bar is shorter in length" to "Change this program so that the trail on the line takes more time to fade away." Solving either of these prompts requires the alteration of only one value in the code, but identifying which value needs to be altered can be a non-trivial conceptual challenge. (I struggled with that second question for a little bit, but figuring it out gave me a much clearer picture of how the program was constructed. I'll leave you to figure it out on your own!!)

I'm still fascinated by the potential of programming to serve as a tool for exploring creative problem solving. I'm struck by the degree to which the environment adopted by KACS, which emphasizes the modification of existing programs over building programs from scratch, eliminates the need for a lot of direct instruction on programming language process. As KACS goes forward, I hope that we'll see more programs and tasks emerge, similar to how an educational community has been built up around Python. If the inspiration behind this branch of Khan Academy someday finds its way into the other curriculum resources they offer, Khan Academy users will be better served indeed.

*A few of the introductory programs on the KACS site include prompts to Change this Program, but this is (for the time being) left off most programs. I'm not sure whether I think it'd be a good thing for these prompts to be a more dominant part of the KACS experience. Certainly it would make for a more self-contained curriculum, but it may also excessively limit creativity. I guess we'll have to wait and see whether this expands as KACS grows further.

Leave a Reply