Clement's Webzone

Remembering My 2 Years at UBC

#diary

It has been 2 years since I’ve finished my MSc (master’s in computer science) at UBC. Before I procrastinate any further and forget too much of it, I’ve decided to grant permanence to what I consider to be one of the best periods of my life.

I’m still not entirely sure what message I want to get across — but I suspect that this post might provide value for three different groups of readers:

  • Friends and family who want to know more about my life (I really appreciate you!!)
  • Any prospective student curious about the Computer Science MSc at UBC, the Systopia lab, or life with my MSc advisor Ivan Beschastnikh.
  • Anyone at all who is considering the MSc vs PhD vs industry question, and wants one example of what this path could look like. Surprisingly, I have had multiple people recently ask me for advice in this specific topic.

I hope that catering to these three audiences simultaneously doesn’t dilute the meaning in this post too much. We shall see.

This post was heavily inspired by Jean Yang’s What My PhD Was Like and Philip Guo’s The PhD Grind. Once I finish my PhD, I hope to write something equally as informative and substantial.

A short preamble

Just in case you aren’t aware, not all master’s degrees in CS are made the same. This is especially true in CS, where many schools in the USA offer course-based master’s degrees in computer science. These programs have a relatively small focus on research progress and emphasize course and project work a great deal. At UBC (and at many other Canadian universities), the vast majority of students do a research-based master’s. The UBC model differs from the typical US model in the following ways:

  • Like PhD students, all MSc students are funded. This is usually through a research advisor’s grant, and sometimes through a TA fellowship.
  • At UBC, the program required six graduate level courses and a research thesis. The thesis is expected to be a year’s worth of work, and is roughly equivalent to a first-author conference paper submission.
  • It is quite rare for undergraduates to enter directly at the PhD level, and instead they will do a master’s first before potentially transitioning into a PhD.
  • Some master’s students start the program without a committed research advisor and are expected to find one after their first year. I was one of these cases.

Alright, that’s enough context for now. Here is the story of my master’s degree, told over 7 school semesters.

UBC

Fall 2016

Fresh off of my undergraduate degree and two months of backpacking across Europe and Asia, I came to Vancouver energized, optimistic and completely clueless. In hopes of finding a research advisor, I told every student/professor that I met that I was “broadly interested in machine learning”, without realizing that >50% of my incoming cohort had the same idea. On the first day of my orientation, one of the PhD students in the ML lab tells me that the chance of an unknown, unfunded student joining their lab is virtually zero.

Nevertheless, I pushed forward; I found any ML-adjacent professor I could and sent them cold emails asking for meetings. Every single one of these emails was ignored or forgotten. The rest of my mental energy and time this semester was spent completely on three graduate courses. In one of these courses, Ivan’s distributed systems course, the entire course consisted of reading, reviewing, and discussing papers everyday in class; I had never taken a course like this before and was both intimidated and excited by it.

Once I land back in Toronto to visit my family over the winter holidays, Ivan sends me an email, asking if I would consider working with him as his student. The prospect sounds exciting but I know very little about distributed systems which scares me.

Winter 2017

After spending the winter holidays considering my one-and-only option, I meet with Ivan in the first week of January and agree to be his student. I don’t believe I’m exaggerating when I say that, as of the writing of this post (early 2021), this has turned out to be the single best decision I have made in my career. Despite formally agreeing to be Ivan’s student, I didn’t “actively” do much research in my first term with Ivan. I wasn’t writing any code or focusing on any single research project.

Looking back, I really grew in two ways throughout this term. The first is that I was really encouraged by Ivan to build my research taste: every week I read a few papers, took notes on them, and discussed my thoughts with Ivan. Our lab also hosted a weekly reading group that featured lively discussion about recent papers published in top conferences. To anyone in CS grad school who intends to be a creator: don’t underestimate the value of building your taste (this has been best said by Ira Glass).

Secondly, this was the term in which I really started to get more comfortable at UBC socially. In addition to forming a community with my research labmates, I really began to connect with the wider CS department as a whole. The culture within CS at UBC is phenomenal; every week the graduate students in the CS department would host tea, bar nights, board game nights, and a student-run casual lecture series. As grad school continued, these events and friend groups kept me sane as things got tougher in the coming months.

Summer 2017

In April of 2017, Google published a blog post introducing federated learning: the topic that would end up being the basis of my research for the next 2 years. On paper, this was a perfect topic: federated learning was a novel method for distributed machine learning (lots of new and unsolved problems), and was backed by one of the biggest tech companies in the world (wasn’t going away). It also helped incredibly that federated learning was a perfect fit at the intersection of my and Ivan’s interests.

This was the first term in which I did research full-time, with no other course or TA obligations. Initially, my project was to support a peer-to-peer version of federated learning, complete with data privacy and security. As the summer progresses, we add Tor onion routing and differential privacy to the system, and we name the project TorMentor. The summer is a lovely time, and work is not very stressful. I find an ultimate frisbee team, go on several classic Vancouver-area hikes, and end up having a pretty great few months.

UBC

Fall 2017

After working on TorMentor all summer, Ivan and I are ready to write up results and submit it to EuroSys 2018; the deadline is in October. I’ve never written a serious, non-course-project paper before, so the thought of making new research claims to completely anonymous reviewers is absolutely terrifying. For about four weeks straight, I work frantic and disorganized late nights leading up to the submission deadline, which is more intense and stressful than anything I have ever done. At the end of a 36-hour non-stop work session, we submit with 30 seconds remaining. I immediately curl into a ball and plant my face into the floor. After a few minutes, Ivan and our group head to the campus bar for a drink.

I move in with some of my UBC cohort friends to a basement apartment in Kitsilano. My rent costs over a third of my stipends, and the apartment is barely livable. We frequently have to deal with mice and in some parts one has to duck to avoid bumping their head. However, Kitsilano is a lively neighborhood that I completely fall in love with. We live 10 minutes from the beach and everything we need is within walking distance. As a carefree 24 year old living across the country away from home, it’s perfect.

Winter 2018

The TorMentor paper is sent back with a rejection. Looking back, it was easy to see why, and it would be the first of many paper rejections I’d receive in my career. Nevertheless, I was demoralized. My labmates, especially the senior PhD students in my group, all provide kind and encouraging words. Especially now that I know paper rejections are completely normal and this was nothing new to them, I really hope to be as supportive to my peers as I become a more senior PhD in my own lab.

Ivan and I develop a plan for addressing reviewer feedback and prepare TorMentor for a resubmission in February. As I’ve now learned, resubmissions are much less stressful than paper submissions, and the rest of the journey for TorMentor was relatively smooth (after a couple more rejections, it would eventually be accepted to a workshop in 2019). TorMentor was far from groundbreaking, and I’ll be the first to admit it had many fundamental flaws. But, you never forget your first.

Summer 2018

There is no need to get repetitive about my research here so I’ll keep it short. I have a very productive summer working on research, and Ivan even lets my supervise an undergrad for the summer. I expand my work in federated learning and produce two additional projects and papers from it: FoolsGold, a defense against sybil-based poisoning attacks on federated learning, and Biscotti, a blockchain-based peer-to-peer federated learning system. Much like TorMentor, both of these papers were written up, frantically submitted, went through multiple rejection cycles, and were eventually accepted at good conferences or journals. In my opinion, both FoolsGold and Biscotti turned out to be far stronger papers than TorMentor; I suppose this came with experience as my skills and taste developed.

Otherwise, I’ll say this once more and for the last time: summer in Vancouver is absolutely perfect. Every weekend, my friends and I go hiking or camping outdoors. Friday evenings were spent out drinking at a bar or on the beach, talking late into the hours of the night. My friends Stewart and Nico convince me to take up climbing and we start going regularly. I really feel at home and have some of the best times of my life.

UBC

Fall 2018

The final month of my master’s involved writing and presenting my thesis. I’ll be completely honest here: my Master’s thesis was just my latest TorMentor submission with formatting adjustments. To anybody stressing over their master’s thesis right now: my master’s thesis was easily approved with minor formatting fixes, and I highly doubt that anybody has read it in full since. I certainly haven’t.

By the end of 2018, I was finally forced to really start thinking about my future. By this point, I knew that a software engineering job was not of interest to me and I was committed to a career in CS research, so a PhD was the natural next choice. Despite being very productive working with Ivan for two years, I was looking to move away from distributed systems research and wanted to branch more into machine learning security and privacy research. Ivan offered that I could stay on as his PhD student at UBC, but strongly encouraged me to at least apply elsewhere.

Most PhD programs accept applications in December, so there was plenty of time for Ivan and I to collaborate on a shortlist of potential advisors and my application. I applied to 8 PhD programs and was accepted to 6 of them. Ultimately I would decide to join Carnegie Mellon University in the upcoming fall.

One issue with my plan is that all my program start dates were not until the Fall of 2019. By a complete stroke of luck, one of Ivan’s former PhD-mates had just founded a privacy-preserving blockchain startup in Berkeley, called Oasis Labs. One referral and a couple interviews later, my plans for 2019 were fully laid out. In December, I meet all my friends in Vancouver for the last few times and board a plane to Berkeley on new year’s eve of 2018. And so ends my time at UBC.

Closing Thoughts

People frequently ask if doing a PhD in CS is worth it: you’re severely underpaid and overworked for 5+ years, in an industry that can otherwise pay you very, very well. The common response (for optimists, at least) is that, even if you don’t ultimately decide on a career in research, the skills you learn and the experiences you have during the journey make it all worth it. I think the same thoughts can apply at a lesser scale to an MSc in CS.

I grew tremendously during time at UBC: as a researcher, as a thinker and as a person. I made many lifelong friendships and was privileged enough to intimately experience an amazing city. Of course, I owe a huge amount to UBC, to Ivan, and to the friends I made in Vancouver. I can’t thank them enough and will always look back to this period with fondness as a special time in my life.