Software Engineering In Discrete Mathematics Terms

Have you ever wondered just how much you can leverage a broad understanding of discrete mathematics if you plan to take up a career in software engineering? Or are you already learning to be a coder, but you’re wondering which comp sci math courses to take next semester?

Well, you’re in the right place. As it turns out, there are quite a few aspects of discrete mathematics that apply directly to software engineering, dev ops, and software testing. The key is to identify how discrete mathematics helps you, and strengthen your knowledge of the specific areas that will further your goals.

So buckle up and keep your hands inside the cart at all times. Next stop: Discrete math heaven.

Programming Concepts In Discrete Mathematics

There are five main discrete mathematics topics that correlate directly to coding prowess:

  1. Probability: The basis of most business, security, and software testing related decisions is probability. The amount of money and programming / testing time spent on a particular issue directly correlates to the odds of seeing that issue in the wild. Machine learning uses a ton of probability math as well, for things such as weighting the importance of certain classes of data ingestion, as well as adjusting spam / ham filters for maximum effectiveness without generating too many false positives. Anyone planning to work in a heavily Agile environment will want a fair understanding of probability as well, since it determines time and resource allocation in a lot of situations.
  2. Number Theory: Welcome to the wonderful world of cryptography. Number theory is the basis of all electronic security. You’ll need to know at least a smattering in order to understand how and why to use certain secure protocols, and when to salt and hash text or flat files. Checksums are also based on number theory, and they’re the key to verifying that data hasn’t been tampered with or corrupted in situ or in transit. You should know how to check them before grabbing a library, and how to generate them for your own software releases.
  3. Boolean: Boolean is the heart and soul of many programmatic concepts: Search, machine language, and flow charts to name a few big ones. Concepts such as and, or, nor, and not are all part of Boolean logic. They form the gates that make up circuitry and programmable logic devices, which means that they’re a cornerstone of PLC and hardware driver development. Flow charts are an integral part of programming logic. They map out all possible paths of the internal workings of an application, as well as the intended user experience. Finally, anyone who wants to be able to search effectively needs to be able to use concepts that broaden the scope, add exclusivity, and utilize fuzzy matching. This means they should master Boolean search. Implementing it in your own applications and documentation systems wouldn’t hurt either.
  4. Combinatorics: Looking to grab yourself a Fulkerson Prize? Combinatorics is one of the hottest areas in discrete mathematics. It’s the science of combining and quantifying groups and fields. And if that seems like a broad definition, that’s because it’s quite a broad cross-section of discrete mathematics. On the programming side, it’s often used as an optimization method. By constructing, counting / tagging, and analyzing the performance of several theoretical models, the programmer can choose the model that is the most streamlined. Combinatorics is also a cornerstone of AI learning. It helps a programmer break down the self-taught logic that allows an AI to identify and categorize something. This allows the coder to introduce rules that will help the AI differentiate between classes that should be grouped together and classes that need to remain independent.
  5. Graphs: Understanding and implementing graphs might seem like a narrow use of discrete math, but nothing could be further from the truth. They’re omnipresent in both the business and programming worlds. Presentation is part and parcel of Agile development these days. Scrum masters and team members need to be able to accurately depict investments of time, as well as the state of a feature’s completion. Graphs help one to do this in a simple, efficient way. Data visualization best practices apply to many facets of programming and dev ops, ranging from resource management to UI development. Understanding the logic behind various types of graphs will help a programmer to present data to the user in the most helpful manner possible.

Comp Sci Math Courses To Consider

With this in mind, here are some of the comp sci math courses that will help you to understand discrete mathematics in a way that will be helpful to your coding career.

Probability & Statistics – CMU’s Open Learning Initiative includes a free foundational course on probability and statistics that will prepare you for all manner of coding and testing roles. It not only goes through the technical aspects of probability, but covers the logic behind it. Harvard also offers Intro to Probability, which is more focused on practical examples.

Theory of Numbers – MIT’s free number theory course covers all of the base concepts that you will need to know before delving into cryptography. When you’re done with that, head over to Stanford’s Cryptography course for an introduction to applied crypto (the non-scam kind).

Graph Theory and Additive Combinatorics – A free MIT course offered through Class Central, this one offers endless hours of fun… if you like this sort of thing. A staggering 26-part course awaits you, and on the other side, quite a nice theoretical knowledge of combinatorics and graphs.

Working with Charts, Graphs, and Tables – But if you’re looking for something slightly less brain bending, this free Open University course on basic data visualization might be more up your alley. If you enjoy it, there’s even a slightly more advanced and in-depth course that you can take next.

No matter which of these courses you choose to pursue, you’ll get a foundation in some of the software engineering skills that can be found in discrete mathematics. There are plenty of paid, professional courses out there as well. But most employers will accept notices of course completion from these prestigious and well recognized schools as credit towards your further education goals.