Hi! I am Tushant, a third-year graduate student at the University of Chicago, pursuing my Master's+PhD in the area of Theoretical Computer Science (TCS).
While I'm dabbling in a few distinct areas, one of my favourites is computational complexity. It primarily involves not just designing efficient algorithms but also proving barriers against their existence.
To take a simple example, we have efficient sorting algorithms that run in O(nlogn) time, and we also know that we can't do better, i.e., every comparison-based sorting takes as much time in the worst case. This is what is referred to as a lower bound. This is a sweet example as the upper bound (algorithm) matches the lower bound. Sadly, in many cases, the known algorithm is way more inefficient than the lower bound we know.
The goal then is to bridge this gap by either constructing algorithms or raising the lower bound. The most famous question of this kind is the P vs. NP problem, one of the Seven Millennium Prize problems.
My academic journey begins in Hyderabad, where I grew up. I went to Bharatiya Vidya Bhavan's Public School till grade 10 and moved to FIITJEE for 11th and 12th. Fortunately, I did well in JEE (2014) and was able to get admitted to the CS program at IIT Kanpur, which I chose not because I had any special interest in the subject but rather out of the prevalent social norm.
In fact, I didn't even have CS in my curriculum in 11th and 12th, so I had little idea what that entailed. The Introduction to Programming course in my first semester made me realize that I liked thinking about the algorithm much more than coding it. I started getting interested in abstract math and spent my free time learning algebra.
In the summer of 2016, the first one was at IISER Mohali in the broad area of algebraic geometry. I did not have a great deal of background in the subject but was introduced to it by my professor, who taught me algebra, a course that I greatly liked. The internship was more of a reading project at the end of which I reproved a classical result. This internship deepened my interest in algebra.
One year later, I interned at the University of Montreal, where I worked on one of Boyd's conjectures in Analytic number theory. I chose this as it was related to elliptic curves, and I had just taken a course in precisely that! It was a truly wonderful experience for me as I did actual research, trying to prove a decades-old conjecture. On top of that, I had a great mentor and got to spend my summer in the beautiful city of Montreal.
These experiences of my internship made me decide to apply for a PhD. The only thing that remained was to decide on an area. I decided to try out Theoretical Computer Science (TCS) instead of math. This was motivated largely by the fact that IITK has a rich tradition of TCS and excellent faculty in the area ensured that there was always a lot of activity in the department. I worked on a project about algebraic complexity for a semester before grad school applications and decided to apply to TCS. I shortlisted three areas, which I thought would be the best areas in the coming future and also included significant math, namely:
based on the courses I had taken and the kind of math being used in these (I was really looking for things with an algebraic flavour).
It's hard to decide on a topic at that stage as one knows little about any subject's different fields. To be honest, I wasn't sure at that point what exactly I wanted to do for a PhD, and I'm still searching for my thesis topic! I received acceptances from a few colleges, and I visited most of them before making a decision, which, no surprise here, was the University of Chicago.
As is evident from my trajectory, I've explored quite a bit and continue to do so, sometimes of my own accord and sometimes forced by the circumstances! I'd advise the reader not to be too calculative while picking projects and be willing to take a shot at something outside one's comfort zone.
You never know what might interest you, and the only way to find out is to actually do it!
Instead of picking courses based on what friends/seniors say, spend time finding out about their content. Attending the first lecture is usually helpful in getting a decent idea. For courses that you enjoy, talk to the instructor and seek out projects to further explore. More often than not, these efforts might not seem rewarding, but that's totally okay. Occasionally, you might encounter something really cool, and you can then dig into it. And when you get tired of that one too? Repeat the cycle! If courses in a topic you like aren't offered at your institute, learn things by yourself or, if possible, talk to a professor in a related area and read with them.
Instead of recommending textbooks or the like, which I feel depend on quite a bit on one's learning styles, I'd like to urge you to read popular science/math books. I urge you to read such books apart from course books. They provide a lot of information in an interesting and digestible manner and redefine your conception of the subject and kindle your curiosity. There are many such books, but here are some that inspired me as a young student.
Every book by Simon Singh!
Enjoy Learning. Enjoy Coding. Enjoy Algorithms!