Tuesday, June 08, 2010

Active learning modules for grad algorithms ?

Active learning (the pedagogy, not the area of machine learning) is all the rage in undergraduate education. My understanding of it (limited, btw) is that it involves much more active engagement with the students, and much less lecturing. This meshes nicely with new trends in teaching, since so much information is available on the web, and so the traditional 'stand at blackboard and scribble for an hour' model seems a little out of date.

My question here is: has anyone tried active engagement modules for topics in graduate algorithms ?  (which means topics like randomization, network flows, and a fast review of basic algorithmic primitives, with an emphasis on proof techniques). I've experimented with group activities for NP-hardness reductions (team students up in groups and have them pick problems out of a hat to prove NP-hard) with mixed results.

My class size is in the 40s-50s range, and has a mix of beginning grads and advanced undergrads, divided up into people taking it as a requirement, people taking it out of curiosity and those taking it to help ace their google/m$ interviews (no I'm not making this up - I did a poll)


  1. I haven't done group work at the grad level, but have for a 400-level algorithms class, and I imagine I would try similar techniques. I hope you'll report back!

  2. I have mixed feeling with active learning for big classes. Graduate classes are even more sensitive to class size.

    I have been using extensively (and successfully) active learning techniques for my undergraduate class, since I started as a professor. Active learning works really well, and is more fun and easier to teach like that. However, when class size goes above 40, every extra student in the class makes teaching more difficult. My gut feeling is that the optimal class size is 25-35 students.

    For graduate classes, I think you need even smaller class sizes. When I was teaching a graduate class with 35 students, active learning worked wonderfully. With 70 students the following year, it was just too difficult. Too many students were hiding in group activities, or entire groups were not really participating unless forced to.

    I expect these issues to be even more pronounced in a more technical class.

  3. We use active learning techniques quite effectively in large medical classes (70-150). Here is a link to our site about methods. http://medicaleducation.wetpaint.com/page/Active+Engagement

    True some of these examples are medical but others are less specific.

  4. It's not as specific as what you want, but McKeachie's _Teaching_Tips_ includes extensive (and intensive, with references to scholarly literature in education) descriptions of several models of active learning, including analysis of adaptability across class sizes. It may give some broad ideas to get one thinking, at least.

    There's also my favorite lesson-in-a-box: To teach X, determine the problem that X was introduced to solve. Ask students to work in groups to solve that problem. When they do so (which, if the question is right, they almost always will), ask them to describe their solution to the class, and tell the class the name of X, perhaps filling in a few details or levels of generality.

  5. I work in a French "Grande Ecole" (a.k.a. graduate engineering school), which is quite open to new pedagogical techniques, including active learning. For example, we participate to the CDIO initiative (where you may find various good practices):

    Yet, we haven't massively used active learning in Theoretical Computer Science. One of our only experiences consists in doing "in-class exercise" before the associated "lecture" for graph theory. The principle is as follows:
    - students discover (from scratch) a problem. The subject does not contain any word that may lead them to a solution (e.g. "flow" for max-flow course). The subject is voluntarily funny and based on real-life problems.
    - groups of students (from 2 to 5 students together) try to find a solution. They communicate with their own words, which is very nice in my opinion. You can help them to re-formulate, or emphasize drawbacks. It is very hard, but very funny, to discuss algorithms with their words.
    - at the end of this 3-hours "course", they frequently have no clear solution, but they definitely try to find a solution.
    - the classic lecture (3-hours long too) is two days later. The teacher introduces the vocable, then the formal formulation of the problem, then the existing solutions.

    We use this "active learning" technique for three topics related with graph theory:
    - graph connectivity and shortest path
    - minimum spanning tree
    - maximum flow

    So, 18 hours for very few materials. But, in our opinion, the material is actually understood by students. A classic sentence from gurus of active learning is "a student remembers:
    - 10% of what a teacher says
    - 50% of what his(er) friend explains
    - 90% of what (s)he discovers by him(er)self".

  6. There is a really nice paper by Sivilotti and Pike that describes kinesthetic active learning activities for a distributed computing class: http://portal.acm.org/citation.cfm?id=1272741

    These kinesthetic activities may be easier to do in distributed computing than for other areas in algorithms, but I think the idea could be adapted.


  7. In David Karger's Advanced Algorithms class, he will pose a problem, students will suggest solutions, he will identify the deficiencies in the solutions, eventually leading us to the topic he wanted to teach. I always felt as if the students in the class came up with the solution to that particular problem.


Disqus for The Geomblog