0
$\begingroup$

I am new student in software engineering and I am too puzzled what is the math that I need to be good software engineer ?

$\endgroup$
6
  • 2
    $\begingroup$ Logic really helps $\endgroup$
    – Bram28
    Commented 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$ Commented 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$ Commented 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$ Commented 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$
    – Blue
    Commented Dec 3, 2019 at 3:58

2 Answers 2

1
$\begingroup$

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.

$\endgroup$
1
$\begingroup$

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 and issquare(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 try ispseudoprime(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.

$\endgroup$
1
  • $\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$
    – user645636
    Commented Dec 3, 2019 at 12:11

Not the answer you're looking for? Browse other questions tagged .