A Brief Overview of my Undergraduate Experience @ NUS
This is my first post and now that I am a Masters student (still at NUS), I thought it would be nice to share my experience as an undergraduate student at NUS. I enrolled in a Double Degree Programme (DDP) at NUS, majoring in both Computer Science and Mathematics. I would not go into the details of double major and double degree programmes but just know that my programme typically takes 5 years (or 4 years with enough overloading).
Year 1 (or how COVID wrecked all of us)
I could seriously remember my first lecture. I was really excited. It was a Wednesday, and at 10am. I was not in school, but at the comfort of my home logging into Zoom to see Prof Martin Henz teach us our first class in programming. It was not long before I can see many tryhards on the Zoom chat showing off their experience with programming, perhaps trying to intimidate the beginners that they are in for a hard time. What a great start to university! (sarcasm). Due to Covid, all my classes happen over Zoom (except for 2 tutorials which I have to turn up in a physical classroom for 2 hours a week). Making new friends was therefore restricted to those precious 2 hours each week. I have a lot of VJC friends who are in the same course as me (Sean, Hafeez, Kenny) so I was not THAT lonely. We were not really affected by the dick-measuring contest (figurative, not literal) that was happening over Zoom and we decided to go at our own pace and help each other out. We figured that was more productive. We took Math classes too, like Linear Algebra, Calculus, Probability and Statistics. They were not that hard and scoring As for these classes were relatively easy. However, due to exams being at home, there were a lot of rampant cheating going on (people staying in hall taking exams together and communicating in a way undetectable over Zoom). This was quite annoying for me because I do not want my hard work to go to waste due to cheaters creating an artificial bell curve which would placed me at the wrong side of the curve. This definitely added on to the pressure to work even more consistently and master all the small bits of knowledge required.
The Computer Science (henceforth, CS) classes were quite fun but there were lot of gimmicks. Homeworks are “missions”, alot of gamified components. I think these classes were the most fun in my opinion. I loved doing their labs and homeworks (esp OOP and Data Structures and Algorithms class). They do take a long time to do, but I love using my brain to solve them. One really can feel a sense of achievement! Remember there was no GPT to help us back then (probably have but its coding ability probably sucked). I was rather worried about the practical exams because they were very pressuring and also done at home. I think my devotion to practice paid off as I scored full marks for every single one of my practical exam! Yay! I am not a fluke after all. I think the first year ended off well for me. I had a 4.88 GPA and I was a better computer scientist as before. I however had the misfortune of having to do really annoying General Education classes which took up a lot of time, have loads of projects and have the most stupid grading schemes ever. I however, liked the ones I could pick. One of them was a History class on Metropolis: A City in World History. I had a very good TA who helped me a lot in my writing and my final essay got featured!
Over the summer, I partnered with my friend Sean (now an engineer at Apple) to build an Android mobile app for Orbital. It was going to be our first Software engineering experience and believe you not, everyday, we spent like 16 hours a day working on our project. We had to learn how to build an app, how to write APIs, how to even write unit tests for our phone app. It was a fulfilling experience as we managed to attained the highest level of achievement! By then COVID has already wind down and we can attend physical classes now.
Year 2 (or the Scramble for Internships)
I did not like my second year but second year was a crucially important phase in our undergraduate journey as many of us would be applying for summer internships. Applications start way before summer (some applications start as early as October the previosu year!). However, I realised I found a calling for algorithms (CS3230). I particularly enjoyed that class alot because I realised I could use my math skills to prove the correctness of an algorithm and analyse its complexity. Also, I loved adapting the algorithms to solve many different types of problems. One can become very creative for the class. I however, particularly did not enjoy computer architecture class. Don’t get me wrong, the labs and assignments are very fun and I did’t struggle with C at all. However, the assessments are horseshit and tedious. It just gave me all the more reason to pursue just algorithms and stay away from hardware altogether (irony incoming). I also took my first software engineering class. I don’t think it was that difficult but it was fun working as a team on a software product. The one CS class that really took the biscuit for me was CS2109S: Intro to A.I and Machine Learning taught by prof BLWL (if you know, you know). I wonder why did SOC ask him to teach that class. He is not even a subject matter expert in it. Also, the prof likes to make a competition out of everything. We had a mini project where we had to code an agent to play a game and conditioned on you beating 2 agents, a good percentage of your score comes from beating other agents (that made it to the open competition round). Furthermore, our finals exam was a 28hour Kaggle competition with a live scoreboard. I did not even sleep for those 28 hours. I also pity my Muslim friends as the finals fell on Hari Raya Puasa. That was one of the most intense experience ever and I did not enjoy one bit of it. A lot of my friends were put off doing A.I/M.L after this class. What a toxic class.
I don’t think the Math classes that I took came easy as well. MA2101 Linear Algebra II was notoriously the hardest 2nd year math class and by god it is. It was taught by an old algebraic geometer whose voice sounded like a dying person. The ungodly timing of the lecture slot meant I was close to dozing off everytime. It was when I decided to skip lectures altogether. Unfortunately, my ethics made me realise too late that I was better off reading the notes instead of going for lecture (or even tutorials). Moreover, it seems that the lecturer has ultra bad handwriting that his handwritten notes were virtually unreadable. I kid you not, I had to rewrite 107 proofs for 107 different results in the notes to study for the midterms (can you imagine how much more for the finals?) Analysis was quite ok for me, but unfortunately the finals were a tad too easy for the likings of a level 2000 class. I was expecting an A+ for this class…but I got a flipping B+. I was kinda distraught as it was the first B+ grade I ever got for a math class in like forever. So this is what getting wrecked by the bell curve feels like.
However, putting all the negativity aside. My second year was made lighter by my super jovial and dramatic communications class tutor, Ms Lyna (who has a somewhat unhealthy Taylor Swift and Hamilton obsession). She is the reason why I love coming to her class, despite what others might think is a burden class (or another General Education) of no importance. Till this day, I still talk to her over Instagram. I think she has a very motherly vibe as well. She genuinely cares for us students and I think she keeps thinking we are super stress and always piled with work. Outside of class content, Ms Lyna taught us about mindful breathing - a relaxation technique which I use till this day! I think Ms Lyna has also played a very big role in me performing extremely well for this class. I still used her techniques and advise in my writing and subsequent writing-heavy classes were a piece of cake for me.
Over the summer, I managed to intern at Seagate where I worked on Optical Fourier Transform. All I remembered was I was pretty lonely (being the only intern in my department).
Year 3 (or Research + Workload = Russell’s brain explodes)
For my 3rd year, I took on a 1 year UROP project (yes, NUS’ UROP is 1 year + vacations, unlike the ones in the UK where its just a cute little summer project). The grading is no different from a Final Year thesis (and yes we had to defend our work too), so you could say I did a 1 year research project / thesis in my 3rd year. UROP took up alot of time and I spent virtually all my time in it. Also, the General Education classes which I neglected in my first 2 years came to bite me back as I had no choice but to do them (they were forcefully preallocated to me and I could not drop them). Remember how I said I hated computer hardware classes and I would stay away from them? My UROP project was on building FPGA SAT solvers. I had fun though, because it was fun trying to hack SAT solvers and figuring things out that people don’t know the answers to. I had to read lots of papers, formulate a research problem and work on it. There were days where I stayed in the lab till 9pm and churn out results. I have to admit, I neglected some of my classes (I got a B for my operating systems class as I did not study enough for the midterms and finals despite being a class I actually enjoyed).
I think my third year was one that really tested my resilience and tenacity and self discipline … (insert every other adjective here that describes pushing oneself to the limits). I was taking 32 units (equiv. to 8 classes) per semester. Year 3 is also the time where my friends took different classes from me now (due to different interests). Sean would go for more software engineering classes, Hafeez prefers media computing and databases whereas Kenny would do cybersecurity classes. I stuck with algorithms and A.I classes. Hence, the amount of support I got from my friends defintely decreased alot. However, I developed a rather close friendship with Muchen (Sean’s army friend) who was also a DDP student. Muchen and I ended up taking almost the same set of classes from here on.
Another highlight in my third year (I hate it that it is even a highlight), was that I had to take General Education classes that the Year 1s typically take. On the menu were Philosophy (HSH1000 The Human Condition), Science (HSI1000 How Science Works, Why Science Works) and Engineering (Design Thinking). That said I was one of the oldest people in the class. And it being Y1 classes, the content can feel…very childish. One of the labs for a classes ask WHY DO THINGS FLOAT??? Also, in each of my General Education classes that year, I was called “old” right at my face (dicks).
My CS GPA dropped quite a bit but it was cushioned by an A+ for my UROP research project (I had acquired 2 Bs for 2 of my CS classes. Worst disaster ever! O.o) but my Math GPA shot up (I don’t know how). I think at that time I needed a break from research and decided not to start my FYP next academic year.
I also managed to get a research internship at A*STAR doing algorithmic work alongside a software engineering position. I was essentially double hatting. In contrast to my previous internship, I really had a blast! I met so many friends and I managed to properly rest and chill out over the summer. It was indeed a strange feeling! These are the friends I would still keep in contact with till this day. A shoutout to Barnabas, Arshia, Justin, Belinda, Yu Xuan, Roxi and James!
Year 4 (or a Year of Mediocrity)
I think my grades dropped the most that year. I am unsure why to be honest. For the first semester, I was taking the normal workload (relative to me it is 6 classes), so 3 CS 4th year classes, 1 Biology class (f-bio) and 1 General Education class and 1 Math class. Having just “graduated” from my year long UROP project, I remembered feeling slightly refreshed that I can focus on my classes again. The 3 CS classes were starting to get very challenging. The assignments were not hard but the exams were basically a test of mental agility and your ability to speedrun - and therefore opening yourselves to making the most careless mistakes. I give an example: the question setting was on 2 agents but I magically added a 3rd agent. This resulted in me getting scores close to the average/median. Maybe I just need to accept that I am sick and tired of studying and that I am not in the condition to perform my best unlike the previous years? Or maybe I am just mediocre. The end result of that tragic first semester was that I only got a single A for my Math class on Discrete Optimisation. The rest…my CS classes were getting A-s (which obviously downed my GPA), and I got a B+ for Biology. (Yes, I consider A-s, B+s as mediocre grades, but that is just my view. I understand getting A-s are a huge achievement for some but please also understand that it is based on my own expectations of myself and you (and I) should not project the same expectations on yourself.)
Can I just say, I might have a serious skill issue in Biology. I have not taken Biology for 10 years (since Secondary 2) and Chemistry for 6 years (since Secondary 4) and it being LSM1301 General Biology - it is very NOT beginner friendly. Ok, to be fair, I did tell myself I will try and was further comforted by the fact that the lecturer said it has very little pre-requisite. 5 minutes later into the first lecture, I was already lost. The “very little pre-requisites” is such a huge lie. Ok, but I try. Due to the huge amount of information (OVERLOAD!!!) and the fact that I learn 50 new words every lecture is crazy. I had to make mindmaps to remind myself of the different biological processes and I bemoan every single living waking moment of my life why are humans or living things SO COMPLICATED??? I enlisted the help of my former student (shoutout to Jacelyn) since she has taken Biology in High school. I did extremely well for my quiz but sort of lost steam at my second quiz. Furthermore, the labs - I DID TRY ok but somehow I could not get the entirety of the points or even more so score above the median! Many of my friends know of my catchphrase which I say every week (f-bio, the f is left to the imagination of the reader). If I still remember any facts about the fateful Biology class to this day, I have only the lecturer’s Hong Kong accent to thank for. Without that accent, I would not get so confused that I have to search up the closest possible homonym and remember it by heart the verbal-to-word mapping which would otherwise have caused me to be eternally lost (and pain).
The second semester, I commenced with my Final Year Project (FYP) which is a research flavoured. This time I was working on a more theoretical project on Nash equilibrium isolation. For the first 4 weeks I was really into the project and getting all these theoretical results. But then we hit a snag which there were not a lot of progress. An FYP is no different from UROP. It has the exact same grading procedure and you submit a thesis at the end before you defend it in front of an evaluator. All I remember was the very same neglect for my studies due to UROP was brought over to FYP as well. Note: ChatGPT was available but it was not that common yet to use it for research. It overall sucks at research.
My grades were less than stellar and I was averaging (for the first time) a B+. Wow it was getting from bad to worst. I still got As in some classes but my two GPAs dropped hard, teetering on the border of a First and a Second Upper (ok before you flame me, remember its about not projecting other’s expectations on yourself.) I also made the ballsy step to sign up for a Masters level algorithms class which I somehow thoroughly enjoy more than my other classes. As usual I hated the General Education class as it sufficiently wrecked my mental health. Ironically, the class was HS2911 Social Media and Mental Health (why 911 was bolded is left as an exercise to the reader.) I think I was practically trolling in the class as my submitted assignments were just full of sarcasm (and received the nicest reviews).
The entire summer, I slaved on my research project. I gave up an internship offer to do this by the way - something I would come to regret. I got 1 interesting result and the proof of it was entirely geometrical - and very elegant. However, it was not enough for a paper submission to AAAI 2026 (we ended up giving up on it). Unfortunately, I found a paper which had a result for my project. It gave the conditions on which the Nash equilibrium could be isolated, however it was only proved to be the case - with no algorithm to compute these new actions. The next step for me was then to find such algorithm. However, it was in the realm of a dark part of Math which I did not explore before and would continue to haunt me for the rest of my life - algebraic topology.
That said, it was also a bittersweet moment for me at the end of that academic year as I witnessed my friends graduate (Hafeez, Sean, Kenny) and that they would go on to find good jobs and they can start a career. I always think back of the times we struggled together and now they are moving on without me. Ok, I still have Muchen with me for another year - but seeing them go feels abit weird for me. (I also made them pinky promise they would come for my graduation next year).
Yeat 5 (or the Year of Redemption and Turning Points)
Ok final year, and it is FINALLY final year. 1 more semester to go for my Final Year Project. I think the experience was getting bad to worse as I was getting nowhere with the mathematics (and yes, ChatGPT still sucked). I had the brilliant idea of coming up with an algorithm (implementable on a computer) that is based on algebraic topology but it failed spectacularly. I think it was also the first time I struggled SOO much for that 1 semester and probably disappointed my supervisor alot. But I pulled through with a heuristic instead of an algorithm. I had good praises for my work (the evaluator said it was easily a Master’s thesis) but my evaluator clearly did not see the struggles I had to put up with. The problem remained unsolved (Update: it has been a while but fastforward 7 months later ChatGPT 5.6 solved my problem and did not use algebraic topology at all. After what I heard was my supervisor’s 25th iteration of prompting, ChatGPT was able to give an entirely linear algebra solution using P-prisms on the geometrical object I was working on).
The classes I took were now mostly Math classes. I think my CS GPA could not take another beating any longer. I don’t think these classes were any hard but I can tell you for sure, that Ordinary Differential Equations (ODE) is fully bs. You will just be taught one ultimate skill: identify the class of ODE and then apply method + boundary conditions and solve. It can be one of the most braindead classes but still an essential class for every mathematician. I took a machine learning class - one in CS and one in Math. There is a difference. I think for Math the focus is on the theoretical principles of machine learning models and proofs whereas CS focuses on the very foundations and dive deep into learning theory and also the cool modern architectures in Computer Vision, NLP (e.g Transformers). Personally, I prefer the mathematics version as I felt like it was more grounded. The CS class can be more empirical based but it has a good share on the theory. Taking both in the same semester seemed like a good choice.
My final semester saw me take another graduate level CS class in probabilistic A.I modelling which is basically a continuation of the CS class on foundational machine learning. The mathematics needed was indeed elegant and it was a good shift from the theoretical stuff I have been doing in research as now I can see what Machine learning can do in real life. I met some new friends there too (Hi Joseph, Harsh Rao and Clyde!) The class was tough but absolutely rewarding! The exams however, were horrible. Can you imagine doing MCQs with 10 or so options and some options can spillover to the second line. Moreover, the choices between them are so so tiny that despite (on paper), you deriving the correct expression, end up selecting the wrong option probably due to parallax error. This happened to me once in each quiz. The idea is however, to make sure you practice alot which I did, and it pays dividends. Another funny class I took in the last semester was Quantum computing. It is the most mind-bending class ever. Think: Quantum entanglement, quantum teleportation, lots of Hilbert spaces and linear algebra on steroids, not to mention Number theory. I was somewhat rather successful in wrecking the bell curve for this class. Don’t get me wrong - Quantum computing was extremely hard. I was clueless for every lesson and I had to go through extra readings to make myself understand things. Gemini is my friend here as I made use of A.I to create quizzes to test my understanding on the material. I think this helped me alot because I know students these days have been getting used to being spoonfed by lecturers which is totally not the way! You need to put in the work. For you undergraduates reading this - please do your duty as students to review materials and ask lots of questions. Now with A.I, you have a personal assistant to help you understand things faster and build learning aids.
To graduate, I needed to take my final General Education class and it was on How to Get Humans and Machines to Talk to each other - jointly offered by the English Dept and Data Science Dept. Let me tell you, I did NOT enjoy this class and probably spent the least time on it. My only comparative advantage was the mathematical questions - which were mostly trivial for me (trivial meaning you can spot answers upon looking at the choices in the MCQ in less than 5 seconds). The linguistics and psychology section demolished me. I started to neglect that class quizzes (it did not help that it is done on Examplify - the worst exam platform possible).
After a full year of mediocrity, I think I did pretty well. That is perhaps an understatement because I started to average a semestral GPA of 4.7-4.8 each semester in my final year which increased my GPAs significantly. Redemption! I graduated on 30th June 2026 with the 2 most expensive degree paper I have ever gotten and will be continuing in NUS for my masters in AI research. I am unsure if I will write something about the summer I graduated (juicy) as I am busy with research. We will see till then!