DEV Community


Discussion on: What Are the Most Important CS Principles to Learn as a New Dev from a Non-Traditional Background?

eladedri profile image

I'd say basic calculus (especially limits, derivatives and such) and Algebra (using matrices to solve a set of equations and the opposite of a matrix).Then, using this knowledge, data stuctures and algorithms. I believe these 4 classes (can be found in Coursera and YouTube) can go a VERY long way in making everyone a better programmer, regardless of specific field of work.

manu4216 profile image
Manuel Micu

I'm curious why you think this kind of advanced math is useful. Do you have a specific type of programming job in mind where it is useful?

I personally learned those things, but never used them as a self thought web developer. Maybe other jobs like game dev, machine learning, image processing?

eladedri profile image

Well, for two reasons - the first being that Math knowledge is required for a true understanding of Data Structures and algorithms runtime analysis (working knowledge of lim calculation is required for the simple understanding of Big O notation). Second, while this knowledge is probably not required for web development, it may come handy in other development fields - I found Matrix inversions to be very useful when I needed to work with physical objects in three dimensional world model (in the autonomous vehicles industry), and that wasn't even using Machine Learning or Neural Network.
Third, understanding of data structures is very handy if you work with big data and limited resources (and yes, for me, even 2k processors running at once is considered "limited resources"), this knowledge is super useful for small tweaks that improve performance (using dicts instead of lists/arrays, performing operations on arrays instead of item at a time).

Sure, one might pick up most of this knowledge, including the required math on the fly, but my answer was on basic topics of CS, not specific topics for certain fields of the industry.

Thread Thread
srleyva profile image
Stephen Leyva (He/Him)

I’d disagree a bit. Time complexity doesn’t necessitate an understanding of advanced mathematics for you to use it practically. While it helps to understand quadratic and exponential complexities, it isn’t necessary. Additionally, understanding a data structure and algorithmic efficiency in certain circumstances doesn’t necessitate advanced mathematics. If you’re building a physics engines or building neural networks, sure. I’ve worked with software engineers who understand data structures and algorithms on a deep level who weren’t so good at advanced mathematics. It comes down to right tool for right problem and being able to discern what that tool is. While admittedly those with mathematics background have an advantage, I wouldn’t say it’s required.

micheas profile image
Micheas Herman

If you need to figure out how your website is going to scale, how much traffic your site can handle, and where to invest resources in performance tuning. Calculus can help you figure things out in a fraction of the time.

It's like writing without conjunctions. You can do it, but it's nice to have them.