Hello everyone,
since I cannot participate in ICPC anymore, maybe it's time for me to start some serious research in theoretical computer science (possibly, something related to algorithms). In particular, I have just started my master's degree and I would like to write a good master's thesis.
However, I need to find a thesis supervisor. Do you have any suggestions, or experiences to share?
UPD: thanks to everyone for the suggestions! I will take some time to make an informed decision on who I should contact.








Computer science nor algorithms aren't research topics. Computer science is a very broad field — I don't think you'll get answers that'll be useful to you without figuring out something more specific.
What specifically are you interested in? Any limits/expectations on who and where you could have as supervisor? Narrow down your options.
At the moment, I have almost zero experience in "serious" research in computer science (and the deadline for writing my thesis is in 2 years). So I'm open to exploring anything.
[#, 0#, 1#, 00#, ...], I would like my supervisor to point out that I should try to use Elias delta instead (I didn't know Elias delta). If I'm using a persistent segment tree to answer queries, but the version of the segment tree I'm using is always the same, I would like my supervisor to detect that.I guess you just have to read enough papers and ask the authors some questions about them, and maybe some collaboration will start from there. The more successful your supervisor is, the less likely it is that he will spend time to come up with ideas for you, or find counters to yours. You can check this out for a pretty blunt thinking process of an accomplished prof. You might like some articles from here.
Thanks for the links :))
Just to clarify, last time I have had no issues at all with "blunt" behavior (actually, my supervisor was very friendly, and we were brainstorming a lot together). I'm just slightly disappointed because of many things we missed (and in particular I missed because I didn't know), and chatgpt would now find in 30 seconds.
With pleasure)) You worked with somebody that liked you and that you could constantly brainstorm with, that sounds like a jackpot for me. I wouldn't mind that much about missing some ideas, you could talk with several people at once.
Sure, that makes sense. For some reason I forgot I could talk with several people (unironically).
I forgot to mention: I hate fields such as machine learning. In general, I hate trying several black boxes with no intuition on what I'm doing, and checking the best one experimentally.
Machine learning is not a black box if you learn it from ground up, in my experience some classes or courses do tend to skip many basics and jump into "hey use these tools" and voila you are ML engineer.
I don't think he means tooling as the black box part. A lot of ML is, sadly, about randomly trying things and mining the best result on an evaluation dataset — theory exists but doesn't really come into the process.
I see, I'm sorry for the misunderstanding
For domain-specific compression, the best algorithms use some form of deep learning. e.g. GPT architecture in combination with arithmetic coding or, even better, self-compressing neural networks. So if you want to work on compression, sadly there's no escape from ML/DL, they just work.
Machine learning is extremely broad. Yes, model architecture research is blackboxy (especially for NLP), but there are other areas like inference optimization where you need to have deep understanding of how hardware works to improve things. Take a look at flash attention paper maybe you'll find it interesting. Or GPU programming in general.
Even some simple comments like "I did my thesis / I'm working with Prof. [name], he works on [topics], I recommend him because [reasons]" are much appreciated.
Well I hope you know that if you want to make a lot of money, this is probably not the way to go. so you better really like this stuff.
I did competitive programming for 6 years without earning anything, so I'm used to that. If my parents need money, I guess I can pause and work as a quant trader for a while.
I recommend you Sir A.K.Goharshady, he's an Associate Professor at Oxford university. His ideas seems similar to yours, and he likes randomized algorithms too. He has published quite a lot of papers as well.
Relevant links :
https://amir.goharshady.com/
https://scholar.google.com/citations?user=4o8gvAYAAAAJ&hl=en
I'm still in highschool, so have not yet done research with him. But, he taught me algorithms. Thanks to him, I have an IOI medal.
I occasionally see competitive programmers publishing algorithmic papers like "Maximum flow and minimum-cost flow in almost-linear time". The authors discuss it in https://mirror.codeforces.com/blog/entry/100510?#comment-892347
I specifically remember rpeng saying
https://mirror.codeforces.com/blog/entry/92248?#comment-809957 so he might be a good person to DM for advice on academia.
I'm the Italian guy who wrote to you on Linkedin a while back, I'm doing a Master's at EPFL, I think (blindly guessing) you would enjoy working with Michael Kapralov and/or Ola Svensson (their group is called "Theory group", if they don't respond (which is highly likely) contact their PhD students), maybe you could check them out but I don't know if it's easy working with them from another university.
hi valerio. i am doing my phd in theoretical computer science. i have went through the same process you are going through ≈3.5 years ago. back then i was not even sure if there is ANYTHING interesting in algorithms research. now i know that there is SO MUCH different cool things. but because there are so many cool things, it is hard to recommend something specific. for example, i am rather broadly interested in the field. i guess my main goal is that the problems i want to work on should at least feel similar in spirit or be related to competitive programming. but that’s a rather fuzzy criteria. (you can check out my website if you’re interested.)
anyway, because there are so many different types of TCS, it is hard for one person to recommend something to another. everybody’s different. what i would recommend you doing is opening the list of accepted papers for the last iterations of the top conferences (STOC, FOCS, SODA, ICALP) and checking out the papers. it could be a bit overwhelming as there are so many. but a can tell you that probably for a lot of them just by reading the abstract you will understand that it does not excite you at all. but then you could find the 5% of papers that look pretty cool. this way you can figure out some subfields that you find interesting. also, you can look at google scholar profiles of the authors of such papers. most probably they have more cool papers. when you will figure out some subfield you like, it just remains to find a top-level researcher in that subfield. that’s a much more manageable task than browsing through TCS in general.
sorry for a vague answer. my thoughts are jumping all over the place. maybe one day i should collect all my thoughts together and write a thought-through blog post about my experience with TCS research as i feel like we don’t talk about it here enough.
P.S. if i missed something important, please feel free to ask more questions.