BLOG@CACM
Education

Worked Examples For Learning Programming: Choosing Better or Choosing MOOC

Posted
Mark Guzdial

 I'm teaching at Oxford this summer, on Georgia Tech's study abroad program.  I'm teaching two classes.  One is a ten person computer science special topics course called "Computational Freakonomics."  We've never been able to fit CompFreak into the schedule on campus, so it's great to have the chance to try it.  I'm also teaching "Introduction to Media Computation," an introduction to programming for liberal arts and management majors, which is a great joy for me. I haven't taught the course in seven years.  It's normally taught in sections of 75-150.  I have 22 students. 

I like really being able to teach intensely. I do all the teaching (90 minutes a day, 4 days a week, for each course), all the grading, and I see the students at meals, at office hours, and around campus all the time. Sometimes students come in for my office hours (3 hours a week), and just sit next to me while they work, so that they can ask me questions along the way.  I get to see the whole process of learning.

I'm taking the opportunity to try out new things, and be able to see how they work.  For example, my students told me at the start of the term that they wanted to learn more about using formulas in Excel.  A team of undergraduates at Tech recently built me a tool called Pixel Spreadsheet that converts a picture into a spreadsheet with columns X, Y, R, G, and B, and then back again.  I had one assignment where students created negative images, grayscale, and posterizing, using formulas in Excel. I got great feedback on what worked and what didn't.

I've been most excited to be able to try out some ideas from educational psychology.  Cognitive load theory suggests that when we teach the domain (like mathematics or programming) and problem-solving in the domain at the same time, we overload our students.  Proponents of this theory suggest we should teach more with worked examples, where students review already solved problems.  

I'm trying out a worked examples approach in my Media Computation course.  Before we left Atlanta, I generated 140 unique program examples, four sets of 35 in different topics.  At four points during the class, I had students work on these examples:

  • Pairs of students took one of the programs in class, got it running, then explained to each other how it worked.
  • Each pair then shared their programs and explanations with another pair.
  • At the end of class, each student took a new program to get running, and turned in an essay a couple days later with the program and her explanation of it.  Students were encouraged to share their essays with one another — no plagiarism concerns here.

The idea is to get them working at understanding programs,  before it's their own programs that they are trying to write, debug, and understand at the same time. The worked examples approach has worked surprisingly well.  Past research has identified problems with having students explain their code.  I had students really digging into it, treating it like an essay in any other class.  Students came to me at office hours to ask for help understanding their programs. Groups of students tried to figure out their programs together — which was exactly the kind of discussion I wanted.  Many of the programs varied in relatively subtle ways, and by comparing them, they started exploring those differences.  My sense as a teacher (completely subjective and anecdotal) is that the students had a much easier time programming after these worked examples activities.  In the end of the term course survey, students are telling me that they really liked the activity and found it valuable.

While I've been here at Oxford, MOOCs (Massive On-line Open Courses) have been exploding at home.  Georgia Tech is one of the schools that has just signed on with Coursera.  I have been excited about the potential for these new kinds of courses and technologies to give us new ways to teach, as Fred Martin talks about in his article in the August 2012 CACM.  

But somewhere over the summer, the tone changed. It wasn't about doing something new — it was about replacing the old.  In some reports, Teresa Sullivan lost her presidency at U. Virginia (then later regained it) because she wasn't moving fast enough to join in on MOOCs.  A colleague tells me that those of us not engaging with Coursera courses have our "head in the sand."  John Mitchell of Stanford told the ACM Education Council in June that he wondered "Will community colleges survive?" in the face of MOOCs.  A commenter on my blog recently predicted that higher-education faculty like me, who focus on introductory courses, will all lose our jobs in the next ten years.

I find myself comparing what's going on in my courses this summer with what MOOCs offer.  I have small courses, where I know every student by name.  I don't believe that anyone is cheating, because I see everything that everyone is doing.  I can invent new activities on the fly, based on what my students want. I'm excited for that, because it's an opportunity for me to try out new innovations in teaching.  In contrast, nobody knows all 100K students in a MOOC.  Dave Patterson tells us that cheating is rampant in MOOCs.  MOOCs are providing a canned experience, with high drop-out rates and unclear learning benefits.

As many commenters in my blog told me, the experience that my students are having this summer with me is unusual and expensive.  Most introductory classes are too large. There may be many people teaching introductory courses who don't want to be there and aren't passionate about it.  But I don't see that MOOC's are a step forward from the status quo.  We do know how to teach better.  We can get better results by improving practice to known best practice.  We don't yet know how to teach introductory computing better in MOOCs than our current best practice in classrooms.

I recognive that my colleague may still be right.  Sometimes the technological solution gets chosen, even if the human solution can be more cheaply improved and provide better results.  Today's professors could be John Henry, who did drive steel better than the steam engine, but the steam engine still wiped him out.  MOOCs do offer something interesting, and for that reason alone, they may be used to replace existing courses.  I would rather choose to make the current courses better.

Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More