<p>Well, you usually don’t need to have attended medical school to dress a scrape or cut, but it’s a medical procedure to which medical knowledge might be applied; moreover, it might mean the difference between distinguishing a common and harmless injury from one where you might need to worry about complications. Similarly, you don’t need to be a car mechanic to do an oil change, or to be a lawyer to successfully defend yourself in court. However, it seems to be going a bit too far to say that being a car mechanic wouldn’t give you an advantage over most people when doing an oil change, or that being a lawyer wouldn’t give you an edge when representing yourself.</p>
<p>I, for one, believe that knowing about discrete mathematics can and does make most people better programmers. Is it required to get a job as a programmer? As you point out, it wouldn’t seem so today; but then again, I’d argue that neither are linear algebra, trig or statistics. Realistically, it seems that all that’s required today is a command of English sufficient to fill out employment-related paperwork, and the ability to write code that compiles. Now, that’s not all programming jobs, but that’s enough of them.</p>
<p>Besides, you argue against only the most far-fetched of my examples; do you agree, then, that the first five examples constitute exercises in discrete mathematics? If so, it seems clear to me that discrete mathematics is an important class for a CS major to have. In fact, it’s the only math class I’d consider directly relevant to what programmers and software developers do (with the possible exception of statistics). People wanting to get into CS, of course, should take as much math as they possibly can; people who want to write software really only need to know about calculus, differential equations, linear algebra, trigonometry, geometry, etc., if they get a job where there boss says, “write a program to do X”, where X implies calculus, differential equations, linear algebra, trigonometry, geometry, etc. Granted, plenty of applications do rely on these disciplines, but that doesn’t make them necessary to the study of CS/SwE/etc… expedient from an employability perspective, perhaps, but not necessary.</p>