Hacker News new | ask | show | jobs
by devnulll 1473 days ago
> Discrete mathematics is indeed crucial to understand computer science.

FAANG engineer here, having worked in multiple companies you would recognize as a principle (or higher) engineer. I've also taken Discrete math when I was a CS undergrad.

I've never used any of the advanced math learned in school, and I've had the pleasure of working on some of the largest and most complex systems ever made. Lots of basic Excel. The "math" I have needed for work (such as TLA+ modeling, percentile distributions, etc) was always learned "on demand".

2 comments

I don't believe that is true.

As a trivial example, to say that you have never used Discrete Math in your work means that you have never for example write if(a && b) or have never done if(!a && !b) and judged it to be cleaner than if(!(a || b)). This also means that you never used a finite state machine, strings, combinatorics, trees, graphs or modulus.

I would believe that you have not explicitly sat down and worked out Discrete Mathematics proofs. But the ideas of Discrete Math are pervasive and unlikely that you have never used them.

Discrete maths is graph theorems, groups, galois fields, and so on.

There are several algorithms (in for example graphs and crypto) that you can not understand or implement without discrete maths. But even then, only the basic level is required.

Maybe only guy ever needs to know these things in a FAANG? (Meaning, could implementing these algorithms keep more than guy busy?)

GP explicitly stated they were referring to what is taught/learned in a discrete maths class.

finite state machine => usually taught in a theory of computation class

strings => wtf?

combinatorics => would be taught in a discrete maths class but I can totally believe that a software engineer has never used combinatorics aside of solving toy problems

trees, graphs => more likely dealt with in a data structures and algorithms course. That said there is a discrete maths slant on how these topics can be approached, but they involve proofs that nobody really cares about when writing software

modulus => those are usually dealt with under number theory classes, besides, unless you're implementing RSA or some cryptographic function, usually the grade 8 level understanding of modulus (i.e. remainder of a division) suffices

That area of computation is a subfield of discrete mathematics, and these are all topics I looked up in my old discrete mathematics textbook.
I would think that would be more logic than discrete math?

Math is a good abstraction, such that it can be brought to describe the work many other fields do. It doesn't stand that what the others are doing is automatically math, though.

With TLA+ in particular I reckon I could probably teach my parents how to do use it the only maths you really need for simple specifications is being able to think mathematically