How do you create interactive computing lectures?

December 2, 2009 at 2:25 pm 10 comments

Jeff commented Tuesday that my undergraduate lectures are “lively.”  I appreciate his confidence in me.  While I do try to make them lively, I suspect that the students often find that they fall short of the mark.  My main focus is to keep them interactive. That’s not always easy to achieve with computing.  I’ll offer what I do to keep my computing lectures interactive here, and ask you to contribute your tips in the comments.

In my intro courses, the most important thing I do is live coding.  It’s hard to fall into a steady, droning pace when you code live.  The biggest reason is that you make mistakes! On my course evaluation surveys, I will often get comments like, “It was so nice of Dr. Guzdial to make mistakes for us! He showed us how to deal with errors.”  As if they were scripted!  Nobody codes flawlessly, even in intro courses — especially if you’re taking questions or suggestions from the audience that lead to code experiments.  Some of our best Media Computation examples came about because someone asked, “What if…?”

Seymour Papert used to tell the story of helping a student make letters on a posterboard with one of the old-style robot turtles.  When a research assistant entered the room, Seymour explained what he and the student were trying to do.  The student suddenly stopped, looked at Seymour, and said, “You don’t know how to do this either?!?” Suddenly, the student launched into the problem and solved it.  A real, authentic problem, with a teacher who doesn’t know the answer, can be energizing for students.  When I make a mistake in live coding, it’s always unscripted, so I don’t immediately know what the bug is.  Most of the time, some student will yell out what I did wrong before I figure it out for myself.  I think that’s a great position to be in, though it does require a heaping helping of humility before starting the lecture.

In my more advanced, seminar-style classes, I run them just as my advisor, Elliot Soloway did.  There is typically a reading (or two) associated with each class.  At the beginning of the class, I ask students to write up a quote from the paper that they particularly liked, particularly disliked, or found really interesting.  We don’t get started until there are at least five quotes on the board.  Then I ask someone to summarize the paper, and we start going through the quotes one-by-one.  I ask who wrote the given quote, and why they thought it was interesting.  I usually do have a list of points that I want to make about the paper. I can usually get to all of my points through the discussion of the students’ quotes.  In this way, they’re talking more than me, and they’re setting the agenda to start.

What are your techniques for creating interactive lectures?

Entry filed under: Uncategorized. Tags: , .

Open University’s new Introduction to Computing Georgia Tech’s Press Pitch on National CS Ed Week

10 Comments Add your own

  • 1. Darrin Thompson  |  December 2, 2009 at 3:41 pm

    Some engineers advocate pair programming as mechanism for getting more done in less time.

    When you are trying to get heads together, there’s nothing like actually seeing actual code actually change.

    The Linux kernel developers do a lot of development by posting code changes in unified diff form to a mailing list, even after all these years of tool development. And they do it by choice.

    I’m of the opinion that in general the optimal way for people to work together is to make ongoing changes as visible as possible. My position is extreme to the point that I advocate dispensing with tools which seek to summarize or obscure the details of changes. (subversion update, for example)

    Anyway, this strikes me as the ideal case of people working together. Watching the thing actually happen before your eyes, and having an opportunity to discuss the real details immediately.

    Kudos on the courage to fail in public.

    Reply
  • 2. Jim Huggins  |  December 2, 2009 at 4:15 pm

    I’m glad someone else makes mistakes with live code.

    I teach CS2 here almost every term … after many, many years, I’ve gotten really good at writing the code. In the early years, I’d make mistakes while writing the code, and then chastise myself when I found my error, going back to my office to sulk and swear that I’d never make that mistake again. Until one day when I realized that the class discussion that ensues after one of those errors was usually one of the best teachable moments of the day. Now, I make those mistakes deliberately, and repeatedly, so that I can guarantee those teachable moments will occur.

    Reply
  • 3. Can lectures be interactive? « Generation YES Blog  |  December 2, 2009 at 4:44 pm

    […] Can lectures be interactive? Hello there! If you are new here, you might want to subscribe to the RSS feed for updates on this topic.Powered by WP Greet BoxHow do you create interactive computing lectures? « Computing Education Blog. […]

    Reply
  • 4. Barry Brown  |  December 2, 2009 at 7:28 pm

    I make frequent accidental syntactic typos which my students usually catch within moments. And they always laugh at my dumb misspellings, even though I wish they wouldn’t.

    But the *big* mistakes are often deliberate. They do result in teachable moments. I fear the errors that I can’t recover from or explain; I’m afraid that the mistake will lead to more confusion than learning.

    I try as much as possible to make the coding I do on the screen a direct result of student input. For example, I solicit suggestions for sample data. Invariably, there’s some goofy name or number that makes the whole class laugh. I relish those moments because combining an emotion (such as humor) with learning results in greater retention of the material. For the rest of the semester, everyone remembers that sample data and the coding example that went along with it. In the best cases it becomes a running joke throughout subsequent classes.

    I’m not a PowerPoint user. I code live. I write on the board, live. I solve problems, live. I teach naked. Many of my lectures are almost totally off-the-cuff — I come to class with just a few notes and examples, and make up the rest as I go based on student input. I think it makes for a much better learning environment. It gives us (myself and the whole class) opportunities to go down paths that we might never consider if I was using a linear PP presentation.

    Reply
  • 5. Emily  |  December 2, 2009 at 9:52 pm

    This article encourages me to try programming live in class. I usually try to have the code ready, but I’ll have to try coding live with my programming class. I usually have live lectures with the students working along with me, but I try to keep it basic and avoid mistakes. I’ll have to try having them catch the mistakes instead of me telling them.

    Reply
  • 6. Mark Guzdial  |  December 3, 2009 at 1:41 pm

    I should have mentioned in my original post. In my data structures classes, I’ll often do CS Unplugged kinds of activities. For example, I’ll have students stand up to be nodes in a linked list, pointing to the “Next,” and holding index cards indicating which nodes are referenced by the variables current and thisNode. I find that the physical manifestation of the data structure has a lot of advantages. First, it wakes everyone up. Second, students notice features of the algorithm or the data structure that were not evident previously. “Hey, how come her, the input node, isn’t anywhere in the list?” Because we only made copies of the input. “The size of the data in the node doesn’t matter, does it, because the nodes are all over the classroom, er, memory — right?” Walking through the algorithm with students representing data is a pretty effective strategy for encouraging interactivity.

    Reply
    • 7. Barry Brown  |  December 3, 2009 at 2:13 pm

      Another plug for CS Unplugged.

      There are a couple of workshops coming up at SIGCSE 2010 about creating active and collaborative classrooms. I’ve taken the one from Jeffrey McConnell (Canisius College) — it’s quite good.

      I am also experimenting with social media, including bringing Twitter into the classroom experience. Dr. Monica Rankin at the University of Texas uses Twitter in her classroom. Here’s a video about it. Google Wave also holds some promise — if you need an invite let me know.

      Reply
  • 8. WIlliam Doane  |  December 4, 2009 at 10:39 pm

    Among other things, I ask my students each week to find a real-world example of the topics we’re covering, either by finding examples of the topics applied in their environment or finding related articles in the tech news media. They’re asked to write a short (< 300 word) summary of the find and to explicitly relate it to class topics. Those are submitted electronically, graded, and returned to students as a way of supporting better student critical writing and research practices.

    Once a week, I ask students to take a few minutes in class to talk to other students int he room about the piece they wrote. I then pick 4 or 5 people randomly (ok… pseudo-randomly 😉 to share their find with the whole class.

    I use the students' observations as a hook to past topics covered and as a launching pad for the next topic to be covered.

    This gets them to start looking at the world and the media around them in a new way– they way we want them to, I believe– by trying to apply what they're learning in class to what they're experiencing outside of class. It makes their writing relevant, keeps everyone honest about completing the assignment, and allows them to learn from one another.

    Building on Barry's comments on Twitter… I don't use t live in the classroom, but I do tweet links to articles from sources students might not otherwise find as possible sources for them to write about and I retweet stories sent to me by students.

    And I make coding mistakes in front of students, both intentional and unintentional, too. I even slip in some red-green testing here and there, usually using simple asserts.

    Reply
  • 9. Ajai Karthikeyan  |  December 10, 2009 at 12:21 am

    You might want to read this article: http://www.zenmoments.org/my-favorite-liar/

    It’s about a professor who promised his students that during each class, he will say 1 lie and it was the responsibility of the students to spot it. It seems to be an interesting way to get students to pay attention cause if you like me, the class just turned into a game.

    Reply
  • […] in the musical sense and put on “AlgoRaves“, but will also include people who talk about “livecoding” in the CS education sense.  I’m really looking forward to […]

    Reply

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed


Enter your email address to follow this blog and receive notifications of new posts by email.

Join 11.4K other subscribers

Feeds

Recent Posts

Blog Stats

  • 2,096,710 hits
December 2009
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
28293031  

CS Teaching Tips