# Applications of Linear Algebra in software engineering.

I'm a software engineering and mathematics student, I was searching for disciplines of mathematics that would go well with my engineering degree, and found a lot of people recommended that software engineers should learn at least a bit of linear algebra, giving book recomendations and else, but I couldn't find any real applications in the software world as to why this was advised.

I've studied a bit of (basic stuff off some introductory books) linear algebra, and I don't understand how any concept from there could be of use in this choice of engineering (I haven't taken many programming courses yet, though).

Anyway, does anyone know of some applications of linear algebra has in the software engineering world?

More generally, which courses should I take to complement my engineering degree (considering I'll most likely work in that industry in the future, but I study mathematics out of love for it)?

• Linear algebra would be useful in writing any game and in doing image processing. There are also situations I've run in to where it would have been enormously helpful for a software engineer to know that XOR turns the set of binary strings of a given length into a vector space. Commented Feb 14, 2016 at 1:34
• – Moo
Commented Feb 14, 2016 at 1:36
• The original Google Page Rank Algorithm is a very famous example. See here for some notes. Commented Feb 14, 2016 at 1:47
• Category theory is good for understanding OOP (I am kidding, sort of). While a grounding in linear algebra is useful, it is not clear to me how it would be specifically useful for software engineering unless you are in some related field (numerics, solvers, etc.). I would think that a grounding in discrete mathematics (graphs, number theory, combinatorics, etc.) would be more useful. Commented Feb 14, 2016 at 2:17

## 2 Answers

"Software engineering" is an enormously broad term. Let's assume you end up writing software in industry, somewhere (like me). The kinds of mathematics that are useful will depend very much on the applications/functionality of the software.

Some examples:

1. Graphics/games: People will tell you that linear algebra is used in these fields. It is, but it's pretty trivial linear algebra -- mostly working with 3D vectors and $3\times 3$ or $4 \times 4$ matrices. Also, you'd need to know some basic geometry, like lines, planes, simple surfaces, Bézier curves and surfaces. Again, very simple stuff.

2. Engineering/manufacturing: Software for computer-aided design, manufacturing, or analysis (CAD/CAM/CAE) makes extensive use of numerical methods and (very elementary) differential geometry. Software for CAE is often based on finite element methods, which in turn are based on numerical linear algebra.

3. Database stuff: I don't know much about this, but I can't think of any mathematical concepts that would be much value in everyday industrial work. Maybe some graph theory and combinatorics would be useful.

4. Finance: don't know much about this, either, but presumably the finance folks build mathematical models and then use numerical (and other) methods to study their behaviour. I'd guess that PDEs and numerical methods are applicable.

That list barely scratches the surface, but it about exhausts my knowledge -- I have real experience in only the first two fields mentioned. As I said, software engineering is a very broad field.

Another idea ... browse through Knuth's "The Art of Computer Programming" books. These are arguably the "bible" of software development, and you'll learn something by seeing what kinds of mathematics they contain. I own the books, but I only open them about once every decade. As far as I can recall, most of the mathematics is combinatorics, graph theory, and a bit of number theory.

I'd recommend asking your question again at StackOverflow. The folks over there know much more about industrial software than people here.

• The folks on Stack Overflow do not want open-ended questions where every answer is equally valid. This question is far too broad to be reasonably answered, and would just generate a big list of possibilities, something that doesn't work well with the Stack Exchange engine. Please exercise caution in referring users to other sites if you are unfamiliar with their policies (accessible here and here). Commented Feb 14, 2016 at 16:48
• Thanks for your answer bubba, it definitely was useful to read. I've asked this question in StackOverflow, but as @CodyGray said, it was not very well received. Commented Feb 14, 2016 at 16:53
• Well, the question is too broad and open-ended for this site, too. But at least the Stack Overflow folks might have answers, even if they won't give them to you. Commented Feb 15, 2016 at 0:52

If you decide to take up any classes in regards to numerical analysis for differential equations, you'll see that in both finite difference methods and finite element methods, things seem to always come down to solving a massive system of linear equations. Obviously diff eq's have their place all over engineering.

• Do they? I think differential equations don't have much place in this particular branch of engineering. I'm looking for applications more towards the software part. Commented Feb 14, 2016 at 1:36
• Certainly if you wanted to model the stress on any kind of object or say product in a manufacturing setting, then they will be involved. Another example might be seeing how fluid might flow through an engine or something like that. Perhaps not much to the user so much as how the software is written, what algorithms it chooses to do the job. So I suppose it depends on which end you are. It's not like you're going to be punching numbers into a matrix through software, the linear algebra really is in the background. Commented Feb 14, 2016 at 1:44
• I can't believe an engineer major would say differential equations don't show up in engineering. Commented Feb 14, 2016 at 1:45
• Yes, I know that differential equations show up in those settings, but as I've said, I don't think I'll end up doing things like that outside a physics course or something like that: As a future software engineer, I'd have to work in a pretty specific setting to develope software to model, say, fluids, and I really doubt I'll end in a job like that. Commented Feb 14, 2016 at 1:49
• @DaveNine Never seen any differential equations in any software engineering course either! This is not mechanical or electrical engineering. I also doubt chemical or biotech enginners need them a lot (if at all). Commented Feb 14, 2016 at 2:02