How I Learned to Stop Worrying and Love the Bell Curve

About 20 years ago, I had the chance to visit NUS. I at­tended a sum­mer school or­ga­nized by an English cen­ter back in Vietnam. To this day, it still leaves a strong im­pres­sion on me. That was the first time I set foot in a uni­ver­sity, and strangely enough, it was not even a school in my home coun­try. I re­mem­ber walk­ing through the cam­pus, not fully un­der­stand­ing what uni­ver­sity life meant, but sens­ing that some­thing im­por­tant hap­pened in places like this.

Twenty years later, I found my­self back at NUS, this time as a stu­dent.

The path there was not straight­for­ward. I gave up on an aca­d­e­mic ca­reer early on. I wanted to work on prac­ti­cal prob­lems, to build things that peo­ple ac­tu­ally use. I joined an ML startup and learned a lot - how to ship mod­els, how to deal with messy data, how to work un­der pres­sure. But the field moves fast. New ar­chi­tec­tures, new tech­niques, new pa­pers every week. At some point, I re­al­ized that with­out solid fun­da­men­tals, I was just chas­ing trends. I needed to go back to the ba­sics to move for­ward.

So I ap­plied to NUS, got ac­cepted, and started my part-time Master’s while work­ing full-time.

What fol­lowed were two years of jug­gling dead­lines, bat­tling ex­haus­tion, and learn­ing more than I ex­pected - about ma­chine learn­ing, about dis­trib­uted sys­tems, and about my­self.

The Bell Curve

The bell curve was some­thing en­tirely new to me.

In Vietnam, we don’t have such a grad­ing mech­a­nism. Most of the time, you can game the sys­tem by en­rolling in easy courses, coast­ing through with min­i­mal ef­fort, and walk­ing away with de­cent grades. The in­cen­tive struc­ture re­wards play­ing it safe.

At NUS, it’s the op­po­site. Grades are curved rel­a­tive to your co­hort. If you take an easy course, you’re com­pet­ing against every­one else who also thought it was easy. If you take a hard course, you’re of­ten sur­rounded by peo­ple who un­der­es­ti­mated the work­load or over­es­ti­mated their prepa­ra­tion.

I dis­cov­ered this the hard way. Courses I thought would be easy A+s? I ended up with B+/A- due to mi­nor mis­takes in as­sign­ments or midterms. The com­pe­ti­tion was fierce, and small er­rors com­pounded.

But here’s the twist: I got my high­est grades in the hard­est courses.

My A+ came from Graph Machine Learning, no­to­ri­ously one of the most dif­fi­cult courses in the School of Computing. The work­load was in­tense, the ma­te­r­ial was dense, and the pace was re­lent­less. But I thrived. Maybe be­cause I gen­uinely en­joyed the chal­lenge. Maybe be­cause dif­fi­cult courses fil­ter out those who aren’t fully com­mit­ted. Or maybe the bell curve god was sim­ply kind to me.

Whatever the rea­son, NUS taught me to stop fear­ing dif­fi­cult courses. The bell curve pun­ishes com­pla­cency, but it re­wards those who lean into the strug­gle.

The Challenges

Balancing work and study is no joke. Anyone who tells you a part-time Master’s is manageable” has ei­ther never done it, or has a very dif­fer­ent de­f­i­n­i­tion of man­age­able.

My first se­mes­ter set the tone. I had to at­tend the RecSys con­fer­ence, then caught COVID just two days in. At the same time, I had a midterm for Deep Learning with zero prepa­ra­tion. I took the exam while still re­cov­er­ing and did poorly.

I re­deemed my­self with sub­se­quent as­sign­ments, but by the end of that se­mes­ter, I was al­ready run­ning on fumes.

Then work got in­tense. I was as­signed to re­design the Multisearch ar­chi­tec­ture - a crit­i­cal pro­ject that de­manded my full at­ten­tion. It was chal­leng­ing, ex­cit­ing, and fun in the way that high-stakes en­gi­neer­ing prob­lems can be. But com­bined with course­work, my stress level went through the roof.

On top of all this, there was the knowl­edge gap.

There was a huge gap be­tween what I stud­ied in my bach­e­lor’s pro­gram and what NUS pro­fes­sors ex­pected, es­pe­cially for math-heavy ML courses. I spent a lot of time catch­ing up on pre­req­ui­sites I never had.

It was hum­bling. It was ex­haust­ing. But it was also nec­es­sary.

The Courses

I took 10 courses over two years. Here’s my take on each, or­dered by how vividly I re­mem­ber them.

Graph Machine Learning - 5/5

Challenging and fun. I learned a lot of new stuff, from spec­tral analy­sis to graph neural net­works. This course def­i­nitely ex­panded my knowl­edge hori­zon. Be warned though: the pace ac­cel­er­ates ex­po­nen­tially to­ward the end, so be pre­pared.

Reading the pro­fes­sor’s Jupyter note­books was ex­tra fun - most of them are di­rectly trans­lated from Matlab. You can tell.

Knowledge Discovery and Data Mining & Text Mining - 5/5

Both taught by Prof Christian von der Weth. Both are high qual­ity.

The as­sign­ments, midterms, fi­nals, and pro­jects are all well-de­signed and fun to do. Lectures move at a rea­son­able pace. I par­tic­u­larly en­joyed the midterms since they ac­tu­ally tested un­der­stand­ing of the sub­ject, not just mem­o­riza­tion. Got A/A+ for the pro­jects in both courses.

AI Planning and Decision Making - 4/5

The con­tent cov­ers the sec­ond half of the fa­mous AI text­book, which has be­come very rel­e­vant to­day with the rise of RLHF and other re­in­force­ment learn­ing tech­niques. Planning tech­niques are briefly men­tioned; the fo­cus is def­i­nitely on RL.

I liked the home­work ex­er­cises a lot. They helped strengthen my un­der­stand­ing, es­pe­cially for top­ics like dy­namic pro­gram­ming.

Not the course’s fault, but I wish I had had more time spend­ing on the ma­te­ri­als.

Distributed Systems - 4/5

I love the con­tent. I hate the fi­nal.

I did­n’t un­der­stand half of what was on the fi­nal exam. Some ques­tions were com­pletely out of scope, and I still won­der what the pur­pose was. 4/5 for the course ma­te­r­ial, 1/5 for the fi­nal.

At least I got solid foun­da­tions in dis­trib­uted com­put­ing, which turned out to be quite ap­plic­a­ble to my work. I was mov­ing from re­search en­gi­neer to more of an AI full-stack role. For this course, I learned Java to de­velop a mul­ti­player game and im­ple­mented some dis­trib­uted mech­a­nisms for real-time in­ter­ac­tion.

Neural Networks and Deep Learning - 3/5

I’d rather have traded this one for Machine Learning Systems.

The pac­ing was odd. Early lec­tures went very slowly, and the pro­fes­sor some­times wan­dered into ir­rel­e­vant top­ics (mostly his own re­search). Then af­ter the midterm, every­thing was rushed.

I got a pretty good grade (A), but I still felt the time at­tend­ing lec­tures was wasted. Assignments and mini-pro­jects were good though. Also met new friends (virtually).

Big Data Systems for Data Science - 4/5

Light work­load, prac­ti­cal con­tent. The usual tech for large-scale data is cov­ered: the good old MapReduce, then Spark. The sec­ond half on dis­trib­uted tech­niques (mostly Spark’s check­point mech­a­nisms) was new to me.

Uncertainty Modelling in AI - 4/5

One could call it Bayesian Machine Learning. The fi­nal was bru­tal. I think the bell curve god helped me here.

Most as­sign­ments are clas­si­cal ma­chine learn­ing prob­lems - reim­ple­ment­ing al­go­rithms taught in lec­tures. The slides are full of for­mu­las, and don’t ex­pect the pro­fes­sor to ex­plain them in de­tail. The lec­tures are long as well, start­ing at 6:30 PM and usu­ally end­ing around 9:15 – 9:30 PM. Combined with com­mute time (about an hour each way), I was ex­hausted af­ter at­tend­ing.

Luckily, the pro­fes­sor shares his lec­tures on YouTube, which turned out re­ally con­ve­nient for warm­ing up be­fore class.

Cloud Computing - 3/5

The light­est work­load of all courses. However, I was too care­less and got a lot of wrong an­swers on the fi­nal, which tanked my grade.

The pro­ject was fun though. We pro­posed a SaaS to rec­om­mend sports based on dif­fer­ent sig­nals like avail­abil­ity, weather con­di­tions, and so on. It also pro­vided a book­ing ser­vice to help users pair with oth­ers or share courts.

Computer System Performance Analysis - 4/5

Fun course with light work­load. I had a chance to learn about queue­ing the­ory and got hands-on ex­pe­ri­ence with low-level op­ti­miza­tion for ma­trix mul­ti­pli­ca­tion.

Even the the­o­ret­i­cal parts (performance analy­sis and queue­ing the­ory), this course is re­ally prac­ti­cal. I would rec­om­mend it to any­one se­ri­ous about soft­ware de­vel­op­ment and be­ing per­for­mance-aware.

The Road Not Taken

The pro­gram lim­its you to 10 courses. Between that and sched­ule con­flicts, I had to leave some in­ter­est­ing ones be­hind. Here’s my list of re­grets.

Machine Learning Systems - I was ex­cited when this course was an­nounced, but I had al­ready grad­u­ated by the time it started. Timing is cruel. The pro­fes­sor seems gen­er­ous though, pub­lish­ing all the ma­te­ri­als on­line. I’ll be go­ing through them on my own time.

Simulation and Modelling Techniques - A com­bi­na­tion of sim­u­la­tion tech­niques and dis­trib­uted sys­tems. The kind of course that makes you want to build things just to watch them break in in­ter­est­ing ways.

Trustworthy Machine Learning - Given how ML sys­tems are de­ployed to­day, this feels less like an elec­tive and more like a moral oblig­a­tion.

Advanced Computer Animation - In an­other par­al­lel uni­verse, I would be a game de­vel­oper. This course be­longs to that time­line.

3D Computer Vision - SLAM, VR, AR, self-dri­ving. Ten years ago, this was my dream. Life took a dif­fer­ent turn, but the fas­ci­na­tion never left.

Algorithms at Scale - I heard this course is leg­endary. The joy of learn­ing al­go­rithms in me never per­ishes. Maybe one day I’ll au­dit it just for fun.

Tips, Tricks, or Whatever

A few things I learned along the way.

Always at­tend the lec­tures. Even if they’re bor­ing (rare, but it hap­pens). At the very least, it forces you to en­gage with the ma­te­r­ial on a sched­ule. Self-discipline is hard; show­ing up is eas­ier.

Work with dif­fer­ent class­mates for each course. More net­work­ing, more ex­pe­ri­ence work­ing with dif­fer­ent peo­ple. Yes, you risk get­ting a lower grade if the col­lab­o­ra­tion does­n’t go well. Worth it any­way.

Enroll in dif­fi­cult courses. Those that peo­ple com­plain about the work­load? Those are the ones where I usu­ally got high grades (A-, A). Maybe be­cause I like chal­lenges. Or maybe be­cause I’ve stopped car­ing about grades and just want to learn things that in­trigue me, re­gard­less of dif­fi­culty.

The bell curve re­wards those who show up for the hard stuff.