Taking additional mathematics on top of software engineering sounds like a foolish plan. Why would someone want to do work on top of an already demanding program? Many of my friends and other lower-year students have asked me this question; this post is the long-winded answer.

Motivation

My original brush with this branch of mathematics was back in middle school. I absolutely hated probability. I especially had difficulties translating word problems because my reading comprehension was quite poor back then. My brief exposure to probability and randomness was met with ridicule and distaste.

This slowly started to change in high school. As I was getting involved in more complex science fair projects in Grade 9, statistics came back with vengeance. Suddenly, I needed to know t-tests, ANOVA testing, confidence intervals and experimental design protocols. My professor mentoring my project saw my confusion and handed me a biostatistics book. Much of it went over my head, but I came to a startling realization of how useful this branch of mathematics was. The book not only covered specific biology applications of statistics, but it went through examples of how specific tests could be used in industrial processing, economics and policy making. I was hooked.

The most interesting section was the statistical modelling part, where I was exposed to linear regression. Predicting the future from the past using laws of mathematics seemed magical to me. I incorporated statistical modelling in my science fair projects, which wasn’t extremely common at that time; it won me a lot of plaudit especially since I could shakily explain the basics of the math behind it.

In the summer of grade 10, I dove deeper into statistical modelling and ultimately machine learning. I learned R, did bioinformatics problems on Rosalind and tried out a bunch of data science models on data from Kaggle. As I did more science fair projects and did more machine learning, I realized the importance of a solid foundation in statistics if I wanted to pursue a career in ML, AI or data science. This influenced me so much that I even chose my university program such that I could do a stats minor (SE allows engineers to do stats minors because we are also part of the Faculty of Math).

Replace Perl with R

In my final year of high school, I took an AP Statistics class with a wonderful teacher, Mr. Niven. Mr. Niven has a gift for teaching mathematics simply; almost all of his students gain an intuition behind all the mathematics he teaches. Statistics is one of those math subjects where intuition is extremely important. He walked the class through the underlying principles of random variables and statistical tests, breaking down misconceptions and teaching first principles on how to think about randomness. Mr. Niven showed me that statistics is not all about modelling and predictions; the very basics of statistics is also quite important and can be fun to play around with. This class was one of my favourite classes in high school and added more fuel to my decision to minor in statistics.

I didn’t really touch statistics in university until my second year. My first statistics minor course, STAT 330, was the real eye-opener. STAT 330 goes through the underlying mathematical theorems that back statistical methodologies. The professor did a wonderful job in showing us how to manipulate random variables and the elegant proofs behind some of the most powerful statistical theorems, like the Central Limit Theorem. Statistical proofs were incredibly cool and made me appreciate how we can use straightforward mathematical logic to reason about randomness. This course was the start in a journey of learning mental models to think about randomness, which is one of the only constants in our life. A lot of peers in statistics wanted to get the minor because they liked statistics jobs, wanted to get into data science/finance or wanted to develop a better intuition behind ML models. After STAT 330, my motivation was completely different: I wanted to learn more about the mathematics of randomness.

Studying statistics isn’t easy when you have a large engineering workload. 2B was an especially difficult term as I not only had STAT 330, but the pandemic courses I had to take were upped in difficulty and took an inordinate amount of time. However, I was genuinely infatuated with the subject and kept going until 4B on my quest.

I took the following courses as part of my minor:

  • MATH 237 (Calculus 3, 2A): This is a repeat of MATH 119. I tried to get the statistics advisors to accept MATH 119 as an alternative for MATH 237 but they would not budge.
  • STAT 330 (Mathematical Statistics, 2B): A beautiful course! Make sure you have a good prof, because the prof can make a huge impact on your experience.
  • STAT 331 (Linear Regression, 3A): This was another pivotal course for me. It taught me much of the mathematical foundations behind predictive models; content was repeated a lot in other courses because of how fundamental this course was
  • STAT 332 (Experimental Design and Sampling, 4B): Bone-dry course, but extremely useful. It gave me a lot of mental models on how to think about ANOVA and different types of sampling.
  • STAT 341 (Computational Statistics, 3B): I was not a big fan of this course as it is simply R exercises and the content didn’t have a unifying theme. I had to take it as it was a pre-req for STAT 443.
  • STAT 443 (Forecasting, 4B): This was a completely new branch of statistics that I never explored, as it went into the specifics of time-series statistics. Would strongly recommend!

Logistics

I declared a stats minor in 2A after I went through the introductory statistics course. I knew that the teaching quality in the stats department was good after talking to a few friends, so I felt confident about doing it. Furthermore, taking a stats minor is a very easy reversible action. I would recommend students to do an introductory stats course first to see if they like the subject before they declare any minor.

Next, I made a spreadsheet on all the statistics courses I wanted to take throughout my undergraduate degree. One important thing to note for SE students is that SE 206 can act as a replacement pre-requisite for STAT 230 and STAT 231 for any statistics courses. You will be blocked by the Quest course enrolment portal, but a simple email to the statistics advisors will fix this issue. I would recommend checking in with the statistics advisors about this pre-requisite mapping to see if it still exists. Another tip for engineering students: try to do easy courses online during co-op if you have the time and money in order to make space for statistics courses during academic semesters. I hate wasting my time in school with useless subjects, so I often did that during the pandemic.

Note that many of the STAT 44X courses that you must take as part of the minor can also count as a technical elective in SE. If the course you want is not in the technical elective list, send an email to the SE directors and they are usually happy to accommodate. This happened with me when I took STAT 443.

What’s Next

I still have a deep fascination of all things randomness and I am hoping to take time over the next few years to self-study mathematics and statistics. Some subjects I am looking to dive into:

  • Generalized linear models
  • Non-parametric statistics and modelling
  • Stochastic processes
  • Computational inference, especially Monte Carlo methods and Markov chains
  • Re-study mathematical statistics because I liked it so much
  • Non-statistics mathematics:
    • Real and complex analysis
    • Vector calculus
    • Chaos theory

I really hope that I can continue to pursue mathematics after I graduate, but time will tell. If anyone is looking to get advice on taking statistics, especially as an SE major, feel free to reach out to me!