students and advising

I'm happy to advise graduate students.

If you've already been accepted to one of our graduate programs, you're very welcome to contact me and schedule a chat about your interests. You're also very welcome to schedule a chat (or just drop by SF3310) to talk about any other matter.

If you're not part of our MSc or PhD programs, you should apply. When applying, do indicate which research areas interest you - this will help us assign an initial temporary advisor for you when you start your studies. The standard approach in our group is to match students with their actual graduate advisors in-person, during the first year of studies, to ensure that we give each student individually the best support we can offer them.

>   Some thoughts about graduate research in theoretical computer science

It can be nice to read people's perspectives about navigating grad school in theoretical computer science (TCS), or at least it was for me when I was a student. Of course, the caveat is that giving and getting generic universal advice over the internet isn't the most reliable process: Sometimes the advice is good for you and sometimes it's bad for you

So let me share some of my perspectives and advice, with the first advice being to think of this text as part of a conversation with me personally, rather than as a universally correct way to approach things. In the end I'll include some shameless plugs about studying at UofT.

1  It takes a village to raise a TCS researcher. I don't think it's possible to go at it alone, and there's really no reason to. As a student you'll have a village around you: Your advisor, your friends and coursemates, researchers you'll collaborate with or visit, faculty and students in the theory group, and people you'll meet in the various programs that TCS has to offer (such as summer schools for students, events for women/minorities, and more). In my experience, and as usual when talking about human interactions and support, this village - where you "grow up" - can help in long-lasting and unexpected ways.

2  I still haven't de-mystified the research process. It's not very clear what happens when someone is thinking about a problem (do I really just stare into space? my wife says that it happens). And more generally, it's hard to sketch blueprints of the paths you'll take from "I'm curious about a question" all the way to "I'm so happy with this cool answer". But experienced people can help by sharing ways to navigate this uncertainty, and to accept it as a constant part of research life.

3  Following your heart into dubious places. Grad school can be mentally demanding, and emotionally taxing at times. This isn't because your impostor syndrome was right all along - it's because TCS research is an inherently hard thing to do, and accomplishments are real. Unless you have military-grade discipline and nerves of steel (which I don't), the best long-term strategy I know of to stay engaged and fulfilled is to genuinely care about what you do. Or, in other words, to work on things you're passionate about.

Doing things that you enjoy. I recommend following your heart also on another matter: Doing professional activities that you're drawn to. Whatever works for you at the time is great - writing scientific texts, giving talks, leading reading groups, travelling to meet people, organizing events, etc. One advantage is that you'll feel good, and another advantage is that these activities can yield useful things for others. But most importantly, you'll be discovering things that make you tick, which (I think) is part of being a grad student.

5  Surviving difficult professional periods. See the first advice here. Some professional periods can be especially hard: Most people I know (myself included) sometimes experience long stretches of time having only a very vague idea what they're doing, if at all. My best advice, indeed following my own PhD advisor, is to survive such periods. It's also useful to remind yourself that in retrospect, these periods can (and usually do) feel like valuable incubation periods for new thoughts, perspectives, and ideas - even if it didn't seem so in real time.

6  Living, in the small gaps when you're not working. Throughout grad school (and beyond), research typically takes a huge part of life, both practically and emotionally. But grad school continues for quite a few years of life, and presumably you're also going to live a bit during that time. Please don't forget that your life in grad school doesn't reduce to your scientific contributions. 

Grad school at U of T. Speaking of villages and communities, do check out our theory group here at UofT. The group is rich in people, events and inspiring research, and its culture is friendly and supportive. There's also another wonderful theory group down the road at Waterloo. 

And in the context of living life: Toronto is an amazing city, and Canada is a good place to be in right now. The culture is tolerant and multicultural, the city is booming with energy and stuff to do (and great food), and immigration can be a welcoming and safe process. In case you're around, bring bicycles and good shoes, and don't feed the raccoons.

I also gladly advise undergraduate reading courses and research projects.

An undergraduate reading course (AKA research project) is intended for you to pursue some scientific interest of yours. You will learn a topic independently, with guidance and direction from me. More specifically, you'll read research papers and/or expository texts, think about what you read, discuss your questions and thoughts with me, and maybe (but not necessarily) have some ideas. To be clear, the focus of a reading course is to help you learn something you're curious about; generating new thoughts/ideas isn't expected or necessary.

Who can approach me? If this sounds interesting, I encourage you to email me. The reading course should be in your third year of studies or later, and by the time you start the reading course, you should have taken a basic course in theoretical computer science, and another course in complexity theory (say, CSC63). Also, you should have some idea of what you're curious about; I don't expect you to know the precise topic (we can work it out together), but you should be able to articulate an area that you're interested in, and briefly explain why.

A stepping stone into theoretical computer science. If you're curious about theoretical computer science, but aren't sure whether or not it's for you (or even how to approach it...), a reading course might be a nice first step. It's an opportunity to learn a bit more about the discipline, with support and guidance.