It’s been a long 4 years, but I’ve finally completed my undergraduate education in Computer Science at the National University of Singapore. It’s a wild time to graduate: Covid-19 has certainly brought about its fair share of woes (such as being harder to find jobs), but it has also given me time to think about how I spent my time in university, and about what’s next.
In truth, I didn’t think much of university when I first enrolled. Computer Science ended up being the only course I applied for, and NUS the only school (and with not-so-great grades too), so things would’ve been different if I weren’t accepted. That’s a scary thought, because of how competitive the course is now. I’d always known I wanted to do something related to computers, I just didn’t think university would be the route I wanted to take. 4 years later, I wouldn’t have it any other way.
When I step back and look at the Jethro from 2016, I don’t think I have changed much as a person. The me now is just a little wiser, and a little more tired. But what’s strikingly obvious is how much my circle of competence has grown. Every year, I learn a shocking amount both about computer science and about myself. What excites me the most is knowing that there’s so much more to learn: the circle of things I don’t know continues to expand at an alarming rate. There was also a pivotal moment some time in year 1 where I realised I didn’t really know what I thought I knew, which changed how I approached both new and old material.
In hindsight, the one thing I did consistently well over the 4 years is putting myself in a position to learn whatever I was interested in. In year 1, I explored heavily on the side of full-stack development/infra with Carousell. In year 2, I considered going the research route, so I did a year-long research on NLP, also gained extremely valuable experience training and deploying machine learning models at scale. In year 3, I explored what it was like working as a data scientist in a much larger company (Twitter). In year 4, I decided the research I did in Year 2 wasn’t satisfactory: I wasn’t fully-committed to it then, having taken up internships and a lot of modules. So I decided to take few modules (1 or 2 per semester), and dedicate the year to my dissertation. I also had a rather unique experience of spawning a popular open-source project, so as a whole, I’d say my coverage in university, at least with respect to the typical computer science experience, is pretty high.
These opportunities were certainly hard to come by. I know people who’d attribute all this to talent, or just having the smarts, but I think that’s being unfair. I’d worked damn hard every step of the way, and that’s a lot easier when it’s on things you’re interested in. The relevant opportunities will surface if you look hard enough.
My biggest regret in university would probably be not making the effort to meet and understand new people. I’d taken all of the foundational mods early on, so by the time I was year 3 I was taking mods largely alone. I eat lunch and attend lectures alone in school most of the time. I don’t have complaints about the solitary time (I do enjoy it!), but I probably should’ve struck a healthier balance. University is likely going to be one of the final periods of your life where you’re placed in an environment where this sort of interaction is normal and encouraged. So talk to your peers, talk to your professors, and talk to people from different faculties. Listen to the stories they have to tell. I’ve had the pleasure of interacting and learning from a few interesting and respectable seniors and juniors, and wished I had done more of that.
Another regret would be not taking the foundational modules seriously. I hadn’t given linear algebra, or statistics much thought, focusing primarily on the other modules I had been taking. These modules turned out to be extremely extremely important for later modules, especially those on Machine Learning, so I ended up having to give them a good review.
If you’re matriculating into NUS and looking for a module route, I’d recommend this curiosity-driven approach. Clear the foundational modules early, and take all the modules you are interested in. But not too many, lest you burn out like I eventually did. Give research a try as well, you might just enjoy it. I really enjoyed taking the level 5000 modules (CS5340 and CS5339). Unlike undergraduate modules, these modules cover a lot of breadth and depth, but require a great deal of self-learning. Another good module to take is Compilers (CS4212) because it covers a good deal of computer science together (operating systems, theory of computation etc.) and helps put things into perspective.
So what’s after university? Frankly, I don’t know. For now, I’m continuing to explore what I’m currently interested in, first working as a research assistant in NUS, and then later transitioning to a company that does the robotics and spiking neural networks stuff I’m researching on. I’m truly hopeful in spiking neural network technology and want to work on it, but we’ll see where that takes me. Finally, if you want to chat about school (or anything) you can reach me at my email! I’ve been getting a lot of mail recently, so I might be slow to reply, but I will.