"As far as I'm concerned, if something is so complicated that you can't explain it in 10 seconds, then it's probably not worth knowing anyway." -Bill Watterson
Basically theory is too hard so I am gonna take a break by talking about something even harder: explaining what theory is to someone who never studied computer science. I am pretty sure at this point there's just no good answer to "so what are you doing your PhD in," but if you are in theory and have figured it out let me know. Actually, I imagine this applies to pretty much every PhD student since we are all just working on some niche problem.
Luckily for you dear reader, I've already run some experiments and figured some things out. Let's look at some possible ways to answer the question of the hour:
Tell them you study "computer science" and see how that goes. Oftentimes, this is off-putting enough by itself to garner no further questions, and the conversation simply moves on. The downside when this happens is that you don't get to shittily explain the P vs. NP problem (or whatever weird algorithm you work on) to some poor relative or friend until they literally beg you to stop.
Ok, so what happens when you get some brave soul who takes the bait, and asks you what within computer science you study? This reduces (in constant time) to our upcoming option, as you are forced to admit that you study theoretical computer science.
Tell them you study "theoretical computer science". Sometimes (especially in a group setting) this also garners no further questions, and our fellow conversationalist comes out unscathed.
But sometimes, people inquire further. Some of the time, it's even because they are interested, and not just being polite! These are truly the wild times. Ok, let's dip our toes in the water then. We say something along the lines of, "oh this means I study algorithms, and try to prove that they are correct and take a certain amount of time and resources. Sometimes, I even try and prove that no algorithm can solve a task."
How did the water feel? This will obviously depend on the person. Of course, many exit the highway here. Totally reasonable decision. I think that often people don't even know what to ask, so they just kind of look at you. In that situation, its up to you whether you want to dunk them headfirst into the icy water. An entirely unholy theoretical baptism, if you will. Anyway, when this happens, I usually just either move on or excitedly dive deeper, depending on my mood and how much I feel like they could tolerate it.
So, whether you decided to push them, or they decided to keep asking questions, we land at the last option.
Tell them actually what you work on. Ok, or tell them about some of your favorite ideas from the field. Either way, we are getting into the most details we can here without writing some math or some definitions. My personal go tos:
Explain my work on property testing by giving examples like: What if we want to test whether you having a big nose is a function of a lot of your genes, or just a few? And go from there.
Poorly explain the P vs. NP problem. I usually try to take something that I know the person spends a lot of time on. For example, if the person is a piano player, I ask them what they think is easier: trying to figure out whether it is possible to play an extremely complicated piece of music, or verifying that someone else can do it? Or if they are planning a wedding: is it easier to book the White House as a wedding venue, or to verify that someone else was able to do it? If they are still interested, or you have them like trapped in a car until you reach your destination, you can try to even explain satisfiability, but this usually causes quite the confusion, at least when I do it.
Give some other example you like from theory. I like to tell people an example I got from Scott Aaronson's book: if an all powerful alien came to earth, she would be able to convince us (via a back and forth conversation that isn't too long) beyond all reasonable doubt who has a winning strategy in a game of chess or Go. Of course, this is a restatement of the IP = PSPACE result, but it sounds kinda wacky when you put it that way, and usually gets people to ask some questions. There's also just so many incredible algorithms out there, like you could explain how we know how to find a minimum cut in a graph, but max cut is hard. I mean probably you'd wanna do this by like some analogy to a network of highways or something -- I don't know I've never tried this one.
On a more serious note: I actually really do enjoy getting to the third option. I mean, I should hope so, since I just signed up to work on this stuff for at least the next five years, if not hopefully longer. I guess I am just a bit shy about it for whatever reason; I don't want to overwhelm people. I think I am also slightly jaded of meeting a lot of people or people I haven't seen in a long time, and everyone asks you what you are up to, and then the conversation quickly moves on. But I know that this experience is in no way unique to theoretical computer science: everyone gets asked where they work or what they do, and very rarely do people actually get to genuinely talk about it or explain it to the people that they meet. I think what is unique to theoretical computer science (and other more abstract fields) is that its not immediately obvious why anyone would care, and the concepts are often shrouded by complex or exceedingly precise mathematical language.
Anywho, I've put together a very convenient flowchart that sums it up below:
Finally, I'll end this post by mentioning that I just applied for an NSF graduate research fellowship. That means, I just wrote a whole bunch of words trying to explain what I work on, why it's important, why everyone should care about it, and how it connects to the real world. So on that note, here's a quote I found online when I google image searched "theoretical computer science" to try and find the background for the title of this post.