Preparation for graduation.

Even though my final year is really still just beginning, now’s the time that I have to make all the big decisions about what I’m going to do after I graduate; things take ages to organise!

The way I see it, final year CS students have two options. Either you carry on studying by pursue another degree such as a Masters or PhD,  or you find a job and start your career. Both have their respective pros and cons, and it’s certainly a complicated decision.

I often think that when faced with a hard problem, the best solution is to avoid the problem in the first place. In this case, the solution is to apply for further higher education and jobs at the same time, and then do whatever the best option that I end up with 🙂

On the job front, I recently had on-site interviews with Palantir in New York. My long standing opinion that the best job interviews include an all expenses paid trip the NYC, was definitely vindicated in this case, since I got to stay in a super four star hotel for three nights, and see all the sights on the three days that I wasn’t interviewing!

The lobby of my hotel.
The lobby of my hotel.

The actual interviews included four technical (whiteboard coding) interviews, and one semi technical system design/interpersonal interview. The questions were really fun, not your stereotypical ‘reverse a linked list’, or ‘traverse a tree in post-order’ stuff.

I also got the chance to meet up with a housemate from last year who is studying at New York University this year. He looks to be having a great time, and he was the perfect tour guide around the city.

The World Trade Centre, New Jersey and the Statue of Liberty.
The World Trade Centre, New Jersey and the Statue of Liberty.

The interview came at a good time, since it’s reading week and I don’t have any lectures to attend or labs to do. However, it’s put me quite far behind in terms of the third year project work I was hoping to get done (except from a few hours of distracted programming on the plane). At the moment, I’m working on implementing a Brill Tagger in C++, which isn’t too conceptually hard, but the devil is in the implementation detail, especially when a small issue such as a small memory leak can become an issue when you’re dealing with a data set of 100 million words. I guess I’ll have to put my nose to the grindstone this weekend!

As I said before, I’m also looking at doing a postgraduate degree. See, I don’t feel as though my computer science education is complete (despite the best efforts of the faculty at Manchester). Three years is simply not enough time to learn everything, and I really want to continue my education a bit more before I decide to get a job, after which I think it’s harder (but not impossible) to learn new things. As a consequence, a masters degree seems like a good option for me.

I can apply the advice I was given when selecting my current CS degree to now, when I’m selecting a masters. You need to think about whether you like the university, the city that the university is in, and the degree itself. For universities, I’m looking at Cambridge, Imperial College London, Edinburgh, ETH Zurich and (of course) Manchester. Zurich is the cheapest in terms of course fees, but also comes with lots of complications, such as living costs (Zurich is crazily expensive) and language barriers. I really like the look of the Advanced Computing course at Imperial College London, but it’s also the most expensive of my choices.

Obviously, choosing the actual course is another decision. Basically, my options at the moment are some kind of ‘Advanced CS’ course, or some kind of ‘Computational Biology’ course. Advanced CS will be similar to what I’m doing now, just at a higher level and more in depth, whereas Computational Biology will expose me to whole new areas of study, and potentially open up a lot of new opportunities, while being lighter on the CS side.

I suspect that I’ll end up sending quite a few masters applications off so that I have all my bases covered.

A busy street!

In terms of ‘normal’ uni work (excluding interviews, postgrad applications and project work), I’m looking forward to the next half of the semester. Stuff on the cards includes code reviewing the implementation of Tarjan’s Strongly Connected Graph algorithm we wrote for Advanced Algorithms 1 and implementing an AI for Kalah in the AI and Games course, both of which should be really fun.