$$ \int_{1}^2 x^2\,e^{2x}cos(x)\,dx $$

If you asked me early last year what these symbols mean I would not have had a clue! For the past 6 months I was on a mission to improve my understanding of mathematics from that of a rusty high school level to at least college level. One could call it a “side project” as I was averaging about 8-20 hours per week on it. I’d like to share the approach I took, explain my reasons for doing it as well as uncover the challenges I faced along the journey. Of course, this journey towards knowledge never ends and is still ongoing!

Last summer, as I was meticulously preparing for software engineering interviews, I stumbled into a few programming puzzles that relied on Probability Theory as a solution approach. I decided right then that I’m not happy with superficial understanding of coin tossing that my knowledge of Probability Theory mostly consisted of. My background, however, was woefully inadequate to comprehend an introductory Probability Theory course. At a fourth lecture I couldn’t follow the lecturer because I never studied Calculus. So I had to take another course before I could continue. One thing led to another and here I am: ~15 online courses (MOOCs) later!

Why did I dedicate myself to learn mathematics? I think it’s because I genuinely like to understand things. From the moment I left a high paying but unfulfilling job I wanted to do challenging and difficult software engineering work. And many challenging and difficult problems are intricately tied to mathematics. I have studied almost no mathematics since I left high school. The program I studied at University was driven by practice and applied projects. The approach has its merits but leaves students responsible to chart their own way into the hard sciences. What sort of difficult problems I’m looking to solve? I find the current landscape of large scale data analysis highly appealing. At the same time I believe that it’s not constructive without understanding of underlying theory. Learning a new tool is one thing but understanding everything conceptually is markedly different. Although learning through doing is often perfectly acceptable certain things cannot be easily looked-up in a moment’s notice. For example, I can’t imagine quickly grasping concepts from Calculus while trying to solve a difficult problem. A problem is already difficult in itself. Is it realistic to quickly look-up integral calculus like one would look-up APIs? It appears that certain fundamental concepts must be understood beforehand.

There are many ways to go about learning. One could sign-up for a full program at a University or conversely learn from books alone. Instead, I chose to rely on semi-free online courses instead. Online courses have matured significantly during the last 5-7 years or so. I remember when Coursera appeared for the first time. There were maybe at most 1-2 distinguished courses. Most courses were run poorly. It is a new media after all and both, students and teachers, still gather experience to figure out what’s the effective way to teach and to learn. Right now, however, there are already excellent courses on many subjects from the world’s best institutions, educators and presenters. The appeal of online courses is that one could benefit from the cream of the crop. I presume that in most Universities there are a couple of professors that are world-leading experts in their fields of study who also engagingly run their courses. Other courses, however, are average or below average. Those are run without passion and are a dread to everyone involved. Not every subject is currently represented by an amazing online course. In my search for curriculum I was driven as much by supply as by personal learning goals. It’s not a deal breaker for me – there is so much to learn that by the time I go through the existing outstanding courses the gaps will be filled with new offerings.

My search for courses was guided by a rough idea of what I wanted to achieve. Initially, that was to complete a Probability Theory course (a goal I still haven’t quite completed). I gradually refined the plan by striving for a well-rounded background in mathematics for Software Engineering and Machine Learning. I recognized that I couldn’t jump into Calculus straight away because my high-school algebra was a bit rusty. In the end, I went to review Algebra and Trigonometry before completing a “Pre-Calculus” course. It is humbling to honestly assess one’s abilities and skills but progress is not attainable otherwise. It’s better not to fool oneself. I am doing it for myself so I gain absolutely nothing by being dishonest or pretending to know more than I actually do. It feels amazing to progress from one concept to another when it all fits together. On the other hand, it is maddeningly discouraging and unsatisfying to listen to a lecture without the necessary background. It feels like trying to put together a jigsaw puzzle that had 70% of its pieces lost. Whenever such a feeling persists it is a sign to take a step back. Here’s a list of courses and materials I have completed so far:



I find Khan Academy a perfect starting point for many subjects. One could argue that such resources don’t count as complete courses. Perhaps, but the whole point of self-directed learning is to learn and not to receive a credential or to complete an “achievement”. Though when a certificate is available within a course I always pay for one. I don’t restrict myself to any particular platform. As a rule, most of the courses I take come from either edX and Coursera platforms. I try to find the best courses by reading through online reviews and sometimes doing 1-2 week trials. Course presentation is important for me. For example, I don’t consider recorded lectures at a white board to be well presented. I find practice and exercises equally important. I maintain a list of courses I would like to take in future. I revise the list regularly as I find new information on the course platforms and shift my learning priorities.

The biggest struggle, surprisingly, comes not from the content itself. I personally don’t find math courses that difficult when the prerequisites are sufficiently covered. New material builds upon the previous foundations (with an occasional refresher here and there). I feel the biggest struggle is psychological and I have noticed several distinct causes. Studying and understanding concepts of mathematics is a time consuming endeavor. Every step forward feels insignificant when viewed against the whole body of knowledge. Hence, progress feels extremely slow. And all that slow progress happens while others are already pushing frontiers of science and technology. It’s hard not to compare oneself to others and to avoid the fear of missing out. But refusal to give in and perseverance are the only ways to grow. It doesn’t matter what others are doing. Whenever I catch myself in these negative comparisons I think of where I was just few months ago. Being smarter today than yesterday is the only thing that matters.

Mathematics is also vast. There are so many directions and branches one can dedicate his whole life on some subjects. It is an ongoing challenge to make the right call as to how deep to study each subject. With infinite time available it is certainly possible to complete every possible exercise and to read every published paper. But I am human being constrained by a full time job, family, sports and ambitions. I ultimately want to delve into the world of data analysis and machine learning and not publish math papers.

Could one seek support and encouragement in others? Unfortunately, only in confines of close friendships could I find much needed support. Everywhere else I found discouragement, lack of understanding or, at best, harmless ignorance. I regularly meet folks whore are:

  • completely disinterested and couldn’t care less (”why do you waste your time when you could do X instead?”)
  • too advanced (e.g. PhDs, post-docs) in their study and dismissive (pushing too soon – “are you already doing Y?”)
  • those who have studied the same or similar subjects but already forgot it as something unnecessary and torturous (”I had it at University, couldn’t understand a thing, so glad it’s over”)

What many can’t understand is that any complicated skill takes time and it’s not possible to cut corners. It takes discipline to hold the same direction and not get too enticed by possible shortcuts. At any given moment there are millions of alternatives available. It is difficult to keep studying and doing tiring exercises against the backdrop of exciting opportunities. But quit and start with a shiny new thing too soon and you will find yourself stuck because of lack of knowledge, more frustrated than ever before. I can see a certain benefit in being engulfed by a complete program at a University. The program shields students from tyranny of choice and lets them peacefully focus on whatever they are doing that moment, without a hint of prejudice or judgment.

Fancy terms and words are another annoyance. It takes years to build up knowledge and expertise but it takes a few minutes to remember the most important words and pretend you know a thing. It feels extremely discouraging to dedicate months of work only later to see everyone else already ahead seemingly without putting any measurable effort into it. Just like with comparing oneself to others it shouldn’t matter what others are saying as long as you’re confident in your own work.

Where do I stand right now? Well, I didn’t complete a course on Probability yet that the whole saga started with. Most recently, I attempted a fantastic Probability course from MIT on edX. I failed it not because I’m insufficiently prepared but because of schedule conflicts. I came to the course too late to catch up. Very soon I’m starting a course on Statistics which is going to be the last course for a while. I’m finally getting to a point where I feel I’m ready to get hands dirty with applied machine learning and data analysis subjects.

For the most part, if you want to fill your gaps in math knowledge or start from scratch in any difficult skill the recipe is simple but hard: honestly assess your current level, make a list of courses and then complete them one by one. Care only about your own progress and ignore everyone else. In due time you’ll be pleasantly surprised by how far you’ve gone. I certainly am!