Mathematics, and Pertinence to Software
Programming is often viewed in a vacuum, as the tool that makes software do what it does. This is often true both on the part of those who learn programming to get a job, and for those who employ programmers as code jockeys to “make things work.”
When this view becomes too limiting, the broad-minded approach usually next encapsulates programming’s pertinence to the business as a whole, viewing software use as an integral part of the business process.
What usually gets left in the dust are the mathematical formulations behind software, typically viewed as highly theoretical and inappropriate or unnecessary in the business context.
For some very limited contexts, this may be true. If you have extremely limited manpower, if the focus of your business is small and directed, and will remain small and directed for the foreseeable future, and has absolutely nothing to do with any kind of math, or lies in such a completely understood field that no new techniques could possibly be developed, then there may be a valid reason to ignore mathematics.
Outside of such contexts, mathematical comprehension drives success in both the short and long term.
Financials, data analysis, artificial intelligence, computer graphics and visualizations, business development, business efficiency, hardware research, materials science, mechanical engineering, transportation and the supply chain, robotics, libraries, education, medicine, language work, governing, fundraising — all these areas use software (or should use software) which is bettered by the knowledge of mathematics, can be improved by mathematics, and for which a solid understanding of mathematics will allow yet more advanced software to be developed which will advance the given field.
With that little rant out of the way, let’s take a far from comprehensive look at a few common areas of mathematics and how they pertain to software.
This one’s fundamental. If you want to build an algorithm, or even understand the data structures used in just about any software system, you’ll need discrete math. If you touch no other mathematics beyond algebra, this would be the one you want. Without discrete mathematics, modern software falls apart.
Ah, calculus. The big bad slog that some people understand intuitively and others crunch away at formula by formula for years. Why does software need calculus?
At its most basic, it doesn’t. Software hasn’t run on differentials since mechanical computing, and many a “software professional” goes to market with at best a hazy concept of continuous functions.
Yet look around, and you see calculus everywhere, driving everything. It’s in . And maybe most importantly, a strong understanding of the principles found in and derived from calculus are requisite for other, more directly applicable areas of mathematics such as probability, differential equations, and combinatorics.
This is a huge topic, and some of it is so esoteric that only engineers in very highly specialized fields or scientists dabbling in the mysteries of the universe will touch them with any frequency. But others are more common, useful to many trades including software. In particular, linear differential equations is used in analyzing large data sets, calculating computer graphics, teaching AI, and so much more.
Combinatorics broad arena of mathematics, with a broad range of applications. Different courses of study will touch different topics here, but at its core deals with the counting and countability of certain types of structures. Understanding this subject requires a certain understanding of discrete math, general mathematical thinking skills, and potentially a few other topics, but is not necessarily “hard” the way other fields may be perceived to be.
Learning the various skills here pairs well with just about any other mathematical discipline that has ties to computing.
Though often taught as its own subject (and for good reason — there’s a lot to learn), graph theory is really just a highly refined subset of discrete mathematics and algorithm studies. A graph in the world of computing is a discrete structure of connecting nodes, and is used to store connected information. Graphs are of particular interest as they possess many subtle and surprising properties that make themselves known only after significant study, yet yield themselves to typically very efficient algorithms used to gather and process information.
Graphs are pertinent to many areas of computing, including databases, machine learning, and interconnectivity (both human and artificial). For instance, a graph might be used to track the connection between to people on a social network, the location of a phone within a cell network, or the number of citations a paper has received.
Some might consider this an “applied” math, since its principles lie in a few different disciplines, but cryptography is a hot topic in math and is often taught as its own subject. Prime numbers are the big winner here, and they and a handful of other basic mathematical tools are employed to perform impressive feats of encryption, verification, and protection.
Cryptography typically requires putting one’s nose to the grindstone, but the benefits are enormous, especially in terms of monetary losses offset when data breaches or hacking attempts are avoided. Remember, for every awful data leak you hear about, there are a dozen failed attempts thwarted ahead of time by the ongoing efforts of people working in cryptography and related fields of study.
Probability and Statistics
Some might consider this pair of items to be one, but either way they form a kind of holy grail of computing, permeating almost every single topic of computing. Every topic in math feeds into it, and it in turn feeds every topic. Financial analysis, biometrics, data processing, artificial intelligence — so many fields rely directly on an astute understanding of probstat.
Look no further than the nearest rookie plying a natural language processing algorithm he doesn’t understand in an attempt to build the next big-selling chatbot, and you’ll quickly see the ramifications of ignorance in this area.
You don’t need to be an expert here to make good use of such skills. A strong comprehension of the basic principles and common formulas (and what they mean) goes very far, and forms a basis for building new skills on top of it.
Software relies on probability and statistics to “make things work.” Or rather, software relies on programmers who understand how probability and statistics work.