I am new student in software engineering and I am too puzzled what is the math that I need to be good software engineer ?
-
2$\begingroup$ Logic really helps $\endgroup$– Bram28Commented Dec 2, 2019 at 22:21
-
2$\begingroup$ Linear algebra, logic, statistics, combinatorics, probability, proof theory.... are all quite useful. If you're working on theory of computer languages, then category theory might be of use. $\endgroup$– David G. StorkCommented Dec 2, 2019 at 22:23
-
3$\begingroup$ I'd say take whatever math courses are required, then also take whatever math courses you find interesting. Honestly for most software engineering applications you rarely need much math at all. $\endgroup$– Matt SamuelCommented Dec 2, 2019 at 22:28
-
2$\begingroup$ @MattSamuel I think you should post your comment as an answer. Just add that you should be able to think logically and solve puzzles, which math sometimes helps with. $\endgroup$– Ethan BolkerCommented Dec 3, 2019 at 1:09
-
2$\begingroup$ I'm a mathematician who has written iPhone/Mac apps. For my own projects, I've used a fair bit of geometry, trig, etc, to add flair to interface animations and such. However, in office/contract jobs for run-of-the-mill apps, I never had much opportunity to flex my mathematical muscle beyond "thinking logically"; I may have been the only person on my teams with any serious math chops. It just doesn't seem to matter; various code frameworks do all the heavy lifting. That said, if you plan to develop at the framework level, the math burden is significant (eg, cryptography is deep number theory). $\endgroup$– BlueCommented Dec 3, 2019 at 3:58
2 Answers
Originally posted as a comment.
I'd say take whatever math courses are required, then also take whatever math courses you find interesting. Honestly for most software engineering applications you rarely need much math at all.
I'll give you examples of what I play with in PARI GP .
Sets of commands testing the same thing at heart:
core(n)==n
,issquarefree(n)
both can be used to check if a number is squarefree. This feeds into algorithmic complexity (as one runs faster than the other over large number of tests, I think by 25%, if my test results were remembered correctly), and combinatorics of testing .core(n)==1
andissquare(n)
( and a few other more abstract ones) can be used to check if a number is a square number.
Necessary conditions:
isprime(n)
tests if a number is prime, but it would run slow on big numbers. A necessary condition for primality, is pseudoprimality, maybe I could tryispseudoprime(n)
first . If it weeds out 20%, then I could do 25% more tests, before the actual primality testing would take the same time as before (assuming primality testing is constant time for simplicity). This is of course, weighted by the probability a given number we are trying to test, will pass the other tests. I give you markup and margin.Logic ( less used by me):
There are 16 logic gates, sometimes we can formulate an equivalent to one we don't have access to natively. So for example, a XOR gate tests if it fits exactly one of two conditions ( or states, in the case of the bit operation) it can be formulated in terms of NOT, OR and AND as follows:
((NOT x) AND y) OR (x AND (NOT y))
This because things like ( x AND (NOT x)) ; can't be true in most commonly used logic.
- You can actually formulate potentially quickfire AND, XOR testing using if else statements, if your language has them.
Mathematics, is applied logic.
oh and for programming stuff https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation helps.
-
$\begingroup$ you can do a parallel vecextract using parapply, and a selection of subsets from any set using forsubset and applying the values given back as indices in the vector you want to find subsets of. $\endgroup$– user645636Commented Dec 3, 2019 at 12:11