Dec 23, 2019 - Seattle, Washington

Hi! So it's in the middle of winter break and I've decided to reflect on my time at CMU thus far. I'm currently a sophomore and one of the experiences that have deeply shaped my outlook as a whole was my experience with discrete mathematics.

At CMU, introductory theoretical computer science classes essentially revolve around discrete math. I'm pretty sure such classes are somewhat the same elsewhere, but I'll speak from my perspective - after all I've only ever taken theoretical CS classes at CMU. I've currently taken 15-151 which is a foundational discrete math class, and 15-251 which is a continuation of that class focusing more on the CS side of discrete math.

TL:DR I ended up with a 'C' for 15-151 and an 'A' for 15-251.

Firstly, I have to admit that I'm far from the best at discrete math, or math in general. As an incoming CS freshman I had a rather delusional and grossly inflated perception of my mathematical abilities. I was like, how hard could math be? Growing up in Singapore I've experienced and done well at Singapore math, which I thought was pretty hard compared to the rest of the world. Thus, as an overly-confident freshman back in fall '18 I decided I could relax a little and coast through college.

I had never been more mistaken in my life.

About a month into freshman fall we had our first 15-151 midterm. No surprise I got a solid 'D' (well back then it probably was a surprise to me but on hindsight my misplaced confidence was begging for a 'D'). I realized I had to buck up. However as hard as I tried, and as much effort as I put in, I struggled to make any leaping improvement. On the second midterm I got a 'C', and on the third midterm I got a 'B'. I guess all the content was too much for my brain to handle and I blew the final and ended up with a 'C' in 15-151.

Exactly a year ago during winter break freshman year I was contemplating the reality that I was just not meant for math. My brain could not handle conceptual proofs. I was ready to give up, and bury that dream of being that student that was really good at CS. I reduced my course-load for freshman spring and took my pre-requisites for 15-251, which I planned to take in sophomore fall. I did a whole lot better at school during freshman spring, which helped my self-esteem a little. But deep down I told myself I only did well because I hadn't taken any conceptual math classes that semester.

Over summer break I went over the first chapter of my 15-151 textbook in detail whenever I wasn't working at my internship. I had initially planned on relooking the entire text but alas I only managed to cover the first chapter in detail. I remember taking 2 full days to figure out an example problem in the text, and it wasn't even that advanced of a problem. I was a little disheartened but nevertheless it was progress. At the end of summer I realized that I finally understood what I could and could not assume in a math proof. I was two semesters late, and I had a little regret not working out such basic math concepts earlier in freshman fall, but I felt good about myself. Before fall semester started I had a minor panic attack about taking 15-251 because I'd heard such horror stories of people failing the class no matter how hard they tried. Well I still felt inadequate about my math abilities, but I made a promise to myself prior to starting the semester:

Even if I was just genetically horrible at math, I would never stop trying to be less horrible at math.

And that simple promise I made had me undertake huge improvements with discrete maths. Unlike in freshman fall where I struggled with the notion of what I could assume and could not assume in a math proof, those weeks of toil during summer just to finish the first chapter in my basic discrete math textbook allowed me to self-check my proofs while I took 15-251.

Every week I sat down and made sure I understood everything in the text. I worked through every single example problem in the text before I touched the homework, and made sure I understood all the problems in the homework. Of course it wasn't smooth sailing as I ended up with a 'B' on the first midterm. I realized I had a new problem to face:

I felt like I wasn't creative enough to solve the hardest problems

The solution was to expose myself to hard problems, and articulate whatever repository of problem-solving approaches I had. I got this idea from my 15-251 professor, Anil Ada.

Long story short I eventually scraped an 'A', and what I learnt was that even if it was true that I was genetically horrible at math, I could make up for it by sheer hard work to really sit down and understand the big concepts behind different problems and ideas. I've since grown to doubt myself less, and know now that perhaps my dream to be really good at CS isn't so unachievable after all. I'm still a work in progress and am far from my delightfully mathematically inclined friends, but I believe I'll get there eventually, for few things feel better than achieving what one initially thought was impossible.