Why Does Theory Matter in Computer Science? /

Why Does Theory Matter in Computer Science? (Meta-Commentary)

Note on the Making (Writing?) of this Talk/Series


When I first started doing this writeup, I did not expect to still be working on it 6 months later. Finishing this was a long, long overdue task for a while.

This is the second write-up I’ve done of a talk I’ve given. The first one I did was for “How to be a Talentless Hack in Public”, which I published in zine form first, before then publishing the text on this blog several months later. (Link to the zine here; link to the blog post here). I stole the idea from Jan Schaumann, who published an article called Semper Ubi Sub Ubi - Things They Don’t Teach You In School.1 I stumbled the article during my first year as a CS student, and it was a major influence on me in two ways: first, it reframed my expectations around what I thought I should be getting out of my degree. Second, it planted the idea in my head that maybe I should archive my talks in textual form in the future, for posterity.

Actually, it turns out that doing this sort of writeup thing, or at the very least, posting a transcript, is a pretty common thing to do. For example, here’s an example by Rob K. Henderson: Luxury Beliefs are Status Symbols.

The big challenge in doing this speech-to-text adaptation, in my opinion, is that blog posts and presentations are fundamentally different mediums. I typically won’t actually straight up copy and paste whatever I said (or planned to say) into the document and hit publish, because the textual mode lacks a lot of features of the live audiovisual mode. For example, I can’t point at things on the screen, or draw on it, or take questions from the audience, or quickly flip back to another slide to make a point, and so on. Slide animations are pretty much completely useless in this format. And I have the luxury of not having a time limit, so I’m usually more interested in making a canonical, “complete” representation of the presentation, which requires some extra effort. This one, in particular, involved writing about math, which was very new to me, to say the least.

There are a lot of things wrong with this series, and the main problem is that it’s actually about two different things that fit together somewhat poorly. One theme of the series is how abstraction and generalization are used together to solve problems in CS (or really, in any field), and the second is the story of the algorithm SuperGreedy++ and why it’s so interesting. These two topics are appropriate for completely different audiences. They ended up in the same talk because, I kid you not, the Carleton Computer Science Society was looking for people to give talks with about a week’s notice and I thought I might use it for practice for a course presentation I already had scheduled for the day after the talks. This presentation, by the way, was for a graduate course on data science–related algorithms, whereas the talk for the CS society was meant to be aimed at the first or second year level.

My solution to this was to give two talks in one: the first part would be legitimately aimed towards first year students, and would be a good faith attempt to explain why theoretical approaches matter in this field. I’d been wanting to give a talk like that for a really long time, ever since I had realized that the average second year student has no idea what computer science is or why anything we learn beyond programming is useful. I did a pretty good job, I think, and it’s the only part of the series I recommend that people actually read.

The second half was practice for my course presentation, except very simplified and organized in such a way that I would be able to relate it to concepts from the first half of the talk. While it was janky, and I was definitely only doing that part of the talk for the practice, I do feel like the SuperGreedy++ saga was a pretty good fit. I find the way that the new algorithm was developed from extensions of prior algorithms to be a really compelling argument for the beauty of generalization, and I thought it was cool that the proof of Greedy++ being a $(1-\epsilon)$–approximation for the DSP came from it being a special case of SuperGreedy++. That is a talk I would have loved to give properly eventually, armed with more knowledge and perhaps to a different audience. As it ways, I still didn’t fully understand the math I was trying to explain, and I’m pretty sure I lost half of the room when I started speaking, because I assumed a lot of mathematical maturity people didn’t have.

While I was able to reuse some of the slides from the second part of the talk for my presentation the next day, I ended up reordering some things, cutting some things, and adding a whole bunch of technical details, because I was explaining what I had learned to people I hoped would actually absorb the information. There, I allowed myself to be a little bit more abstract; to use more jargon; to give more accurate definitions of things, and to be more specific with my analysis.

The writeup I’ve posted here is based neither on the first nor the second set of slides, but on an amalgam of the two. I thought doing the writeup was an excellent opportunity to expand on some things I’d glossed over in my real-life talk. Text typically doesn’t come with a time limit, and this is my blog, so there is no space limit. Why not give the reader as much context as necessary? Not to mention, it felt good, for once, to give my course project a second life on this blog. Usually I put all that effort in and I never see them again, which strikes me as incredibly sad.

At the end of the day, I’m really glad I did this and completed the series. Posting it in installments was a gamble at times, because I wasn’t entirely convinced that I would actually finish it at times. I’m really not happy that it took six months, but I am happy to no longer have it burning in the back of my mind.


  1. Semper ubi sub ubi is seemingly Latin for “always wear underwear”, which I hope isn’t something you actually need school to teach you. ↩︎

 Why Does Theory Matter in Computer Science?