# The Best Course I Ever Took: Combinatorics Problems

I sat quietly in the chair, number six or seven on George’s agenda of young hopefuls. The on campus recruiting process was a brutal cattle call. On the positive side, we had a large number of great companies coming to visit. Unfortunately, the vast majority of my 1500 classmates were tipped off about their arrival. Moo!

His eyes skimmed down my resume – and locked onto a phrase halfway down the page.

“Combinatorics Problems? What the heck is that?”

I smiled. I’d found my hook, something better than “why I love double-entry bookkeeping” or “I woke up this morning and decided I wanted to learn financial modeling”. I started talking about a weird little math elective that I took my senior year to round out my credits. That conversation got me an office visit and, ultimately, a job offer. George became my boss.

First job aside, that little course has proved surprisingly useful over the years. The math curriculum focused on serious stuff: calculus, linear algebra, probability, theoretical stats. Never cracked a book on it since I’ve left school. Combinatorics on the other hand…

For the uninitiated, combinatorics is a fancy word for counting and analyzing sets of items. Entry level combinatorics problems generally focus on measuring the number of distinct combinations or potential outcomes of a question. How many ways are there to select five balls from a jar of 40 balls? What if there are multiple colors? Does order matter? What would increase or decrease the number of possible outcomes?

So when do you need this stuff?

Computer Programming – once you start writing non-trivial programs, understanding the amount of “work” you’re asking the computer to do becomes pretty critical. This turns into a string of combinatorics problems:

• Count the number of possible ways to join the records on two (or more) data tables
• How many mathematical operations are required for a particular algorithm?
• How many permutations of a scenario do we need to support?

Management – you’re going to routinely need to manage the complexity and cost of your team’s offering and work required to deliver it. Internally, the number of permutations of a product or service will dictate the level of effort required to develop, stock, and support it. Externally the cost is much higher: offer a customer too many raw permutations of your offer and you’ll lose their business.

Estimating Probability – A good grasp of combinatorics helps you measure the possible outcomes of a process. While there are some obvious applications for those of you who are playing in the world series of poker (loaded with combinatorics problems), the same type of math is very helpful for process improvement work. Understanding the math behind the range of possible outcomes can help you tweak the odds in your favor.

Interestingly enough, most of the calculations I did in the combinatorics problems class didn’t involve much math beyond the high school level (pre-calculus). Some computer programming experience is helpful – Python has a great module in the standard library (itertools) with a number of prepackaged functions for combinatorics problems.

The other point of this article, for students and folks just starting their career, is that you shouldn’t get too wrapped up in picking what you study. Of the 35 college courses I took, three of them (Combinatorics Problems, Propaganda, Russian Revolutionary History) stand out as contributing to my career. At the time, I thought they were fairly frivolous electives relative to the more “serious” courses I was taking. Go figure…