Mathematics for Computer Science (2017) [pdf]
courses.csail.mit.edu
courses.csail.mit.edu
- MiniZinc, https://www.minizinc.org/ a constrain set programming language that can also optimize an objective
- Picat, http://picat-lang.org/ a general purpose language that specializes in logic and optimization
Mathematicians' version of your lamentation would probably look something like "I studied all the ins and outs of measure theory/functional analysis and category theory/algebraic geometry for four years and all I do today is teach engineering students calculus and freshman math majors - elementary real analysis. That's deeply sad". :)
In HFT firms you need to know some calculus as some of your data are going to be mathematical objects that are squarely in the field of calculus.
Game devs need to know about matrices and quaternions. Mostly on how to use it, no proofs necessary.
There are some fields and exploit chains where knowing some math to advanced math is necessary for hacking. For example checkout Triton and PIN from Intel and SMT solvers. I needed to instrument a binary program in class and use Triton to make an SMT equation, solve it and crack a password that way.
Data scientists need to know statistics but you could argue they aren’t software devs but I bet some of them are both while having data scientist as a title.
When performing speed optimization experiments, it is necessary in some cases to know statistics as you’re really finetuning things. Simply hitting run for a few times and observing a 5x to 10x speedup doesn’t fall into this category, as the speedup is obviously visible. I am talking about stuff that you can’t distinguish that easily.
In general life, I would say strong knowledge about statistics is helpful. It helped me accurately assess the covid threat where I live. It also taught me to take every small chance out there. If I take enough chances then the likelihood of me hitting one of them becomes very very likely. I played poker as a teenager and have used statistical/chance-based thinking ever since and it helped me to experience more certainty in uncertain situations. I have played enough hands to know what a 1% chance of losing feels like (it feels like paying a fee to win the other 99 times, on average. Except if you’re not paying attention. Then it feels like you shouldn’t have lost and you’re probably going on tilt.).
That’s what I know so far.
Interesting. Are there any specific books you would recommend for this sort of thinking, or are just basic stats books good enough?
Second, google on lying with statistics.
> plug and chuck
Did you mean plug and chug?
It would probably take an entire semester to get to more advanced topics in linear algebra. This is typically its own course and isn’t the computational version.
Despite the book’s title this course is more geared towards getting students ready for Algorithms and other CS theory level courses.
[0] Math For Machine Learning by Deisenroth, Faisal, Ong:
https://www.google.com/books/edition/Mathematics_for_Machine...
[1] Foundations of Data Science by Blum, Hopcroft, Kannan:
But in general, knowledge of biology or sociology is about as likely to be useful in your programming career as knowledge of mathematics is - domain-specific knowledge of the domain you are programming for is the real key. If you're programming a biology or sociology tool, those will be more useful than maths. If you're programming a mathematical tool, of course maths is extremely important. If you're programming a library of base algorithms, algorithm knowledge is important.
For sociology, you can use graph to model friendship relation, for example.