Knowing and Doing: June 2026 Archives
Knowing and Doing
Reflections of an Academic and Computer Scientist
June 2026
Su<br>Mo<br>Tu<br>We<br>Th<br>Fr<br>Sa
10<br>11<br>12<br>13
14<br>15<br>16<br>17<br>18<br>19<br>20
21<br>22<br>23<br>24<br>25<br>26<br>27
28<br>29<br>30
Main
June 30, 2026 8:43 PM
Teaching Algorithms in 2026
It seems I am fated to teach our undergraduate algorithms course<br>every decade or so.
I taught it for the first two times in 2004-2005, when I'd been<br>on the faculty for a little over a decade. I taught it again<br>in 2014, to the largest section of students we've had in my<br>department in the last twenty-five years. Now it is 2026, and<br>I'm on tap to teach it again this fall.
Algorithms has always been one of my favorite subjects, both as<br>a student and as a professor, but I don't get to teach it very<br>often. Being department head means that I don't get to teach<br>as many courses, and thus as many different courses, as I would<br>if I had a three-course load each semester.
When I last taught the course, I wrote
a blog post
in which I thought out loud about my approach to the course, in<br>particular the choice of a textbook. I also asked readers what<br>changes, if any, I should consider making in the course content<br>in order to reflect the evolution of CS and the software world.
I'm back.
A lot has happened in the twelve years since I last taught this<br>course, not least of which is the statistical machine learning<br>revolution that is modern AI. It changes how many students<br>study, program, and learn, which means it will affect my course<br>even if I don't adjust the course content because of it.
If AI has permanently changed how people in industry write code<br>— and especially if it has replaced writing code<br>with generating code — then the algorithms course<br>becomes an even more important part of an undergraduate CS<br>education. Now more than ever, students need to learn how to<br>read code, to identify and comprehend the algorithms implemented<br>in code, and to analyze the correctness and performance of<br>generated code.
Whether to assign a textbook to students (and, if so, which one)<br>remains a big decision. That
2013 post
wandered around the options a bit. This time around, I am<br>essentially deciding between a traditional text or none at all.
Traditional textbooks are so expensive that I'll only adopt one if<br>the value it offers students is enormous. The book I've used in<br>the past,
Anany Levitin's Introduction to the Design and Analysis<br>of Algorithms,
is expensive and hasn't been updated in fifteen years. Even so,<br>I like it.
Several of my colleagues recommend the zyBooks platform for its<br>built-in reading quizzes and analytics, but I wonder if these<br>features, too, offer enough value. Besides, the platform now<br>promotes its "AI tools" as selling point, which makes me leery.
I've long been inclined to write my own notes for students, and<br>that's where I'm leaning for this course as well. I like the<br>organization of Levitin's book, but my courses usually follow<br>my own idiosyncratic path. I like the idea of engaging students<br>with interactive content in a zyBook or other online text, but<br>I'm not sure that they will map well enough onto my approach to<br>the courses to really help my students. In the end, I will<br>probably expand my own notes for the course and supplement them<br>with a few well-chosen resources on the open web. That approach<br>has served me pretty well over the years.
All that said, the big question in my mind as I prepare the course<br>is content. Which algorithms should we teach in an undergraduate<br>algorithms course, circa 2026? Do changes in theory and industry<br>require a fresh look at the topics we teach undergrads? Is the<br>standard collection of algorithms still what students need as a<br>base when moving out into the world?
In 2014, readers generously sent me many ideas. A significant<br>majority of the recommendations boiled down to this: teach the<br>traditional algorithms and concepts, perhaps with a tweak or an<br>addition at the fringe.
That's what I did then, and it worked well. Former students<br>occasionally email or message me to say that something they<br>learned in that class made a difference in their current project.<br>There aren't many better feelings for a professor than receiving<br>a message like that.
What do you think for 2026? Should we adjust the balance of topics<br>that we currently teach? Should we add a new algorithm or data<br>structure to the undergraduate canon? If we teach a new algorithm,<br>or a new class of algorithms, which standard material should be<br>de-emphasized, or displaced altogether? (Alas, the semester is<br>still only fifteen weeks long.)
Please<br>send me your suggestions!<br>I would be happy to write up a summary of the ideas you share, and<br>I will certainly use your suggestions to design a better algorithms<br>course for my students.
I really do enjoy this course. It gives both the students and me<br>multiple opportunities to do a little theory, a little design, and<br>a little programming. I also like to have some fun, using what we<br>learn to play games and solve...