TITLE: Teaching Algorithms in 2014
AUTHOR: Eugene Wallingford
DATE: November 24, 2013 10:54 AM
DESC:
-----
BODY:
This spring, I will be teaching the undergraduate algorithms
course for first time in nine years, since the semester before I
became department head. I enjoy this course. It gives both the
students and me opportunities to do a little theory, a little
design, and a little programming. I also like to have some fun,
using what we learn to play games and solve puzzles.
Nine years is a long time in computing, even in an area grounded
in well-developed theory. I will need to teach a different sort
of course. At the end of this entry, I ask for your help in
meeting this challenge.
Algorithms textbooks don't look much different now than they did
in the spring of 2005. Long-time readers of this blog know that
I face the existential crisis of selecting a textbook nearly
every semester.
Picking a textbook
requires balancing several forces, including the value they give
to the instructor, the value they give to the student during and
after the course, and the increasing expense to students.
My primary focus in these decisions is always on net value to the
students. I like to write my own material anyway. When time
permits, I'd rather write as much as I can for students to read
than outsource that responsibility (and privilege) to a textbook
author. Writing my lecture notes in depth lets me weave a lot of
different threads together, including pointers into primary and
secondary sources. Students benefit from learning to read
non-textbook material, the sort they will encounter as throughout
their careers.
My spring class brings a new wrinkle to the decision, though.
Nearly fifty students are enrolled, with the prospect a few more
to come. This is a much larger group than I usually work with,
and large classes carry a different set of risks than smaller
courses. In particular, when something goes wrong in a small
section, it is easier to recover through one-on-one remediation.
That option is not so readily available for a fifty-person course.
There is more risk in writing new lecture material than in using
a textbook that has been tested over time. A solid textbook can
be a security blanket as much for the instructor as for the
student. I'm not too keen on selecting a security blanket for
myself, but the predictability of a text is tempting. There is
one possible consolation in such a choice: perhaps subordinating
my creative impulses to the design of someone's else's textbook
will
make me more creative
as a result.
But textbook selection is a fairly ordinary challenge for me. The
real question is: **Which algorithms should we teach in this
course, circa 2014**? Surely the rise of big data, multi-core
processors, mobile computing, and social networking require a
fresh look at the topics we teach undergrads.
Perhaps we need only adjust the balance of topics that we currently
teach. Or maybe we need to add a new algorithm or data structure
to the undergraduate canon. If we teach a new algorithm, or a new
class of algorithms, which standard material should be de-emphasized,
or displaced altogether? (Alas, the semester is still but fifteen
weeks long.)
Please
send me your suggestions!
I will write up a summary of the ideas you share, and I will
certainly use your suggestions to design a better algorithms course
for my students.
-----