[Math] Applications of Linear Algebra in software engineering.

applicationslinear algebrareference-requestsoft-question

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)?

Best Answer

"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.

Related Question