# How do I sell out with abstract algebra?

My plan as an undergraduate was unequivocally to be a pure mathematician, working as an algebraist as a bigshot professor at a bigshot university. I'm graduating this month, and I didn't get into where I expected to get into. My letters were great and I'm published, but my GRE was bad and my grades were good but not perfect. My current plan, I guess, is to start a PhD program at my backup school, then reapply to the better schools next year.

Reality is starting to hit, though, and I'm starting to think about "selling out." I would still love to work in algebra, but I'm not as in love with the Ivory Tower as I was a few years ago, and I don't want to give up my entire life for it. If the institution isn't going to let me do what I wanted to do, or if I'll never be as talented as I wanted to be, it isn't worth the sacrifice. In other words, I'd rather be a well paid applied mathematician in industry than a poor, mediocre pure mathematician at a low end university.

The problem is it seems that most of the applied jobs out there are all about analysis / continuous mathematics, and I am firmly in the algebra / discrete camp. I really do not want to spend my life solving fluid flow PDEs. I always hear about cryptography as an "applied algebra" job, but I'm not particularly crazy about working for NSA or a telecom (plus crypto can't be the only option).

I read some of the answers from Can I use my powers for good? but it's not clear to me which of these suggestions value algebraic thinking. Many seem very quantitative, rather than structural - is it possible to avoid this in industry? Also, I have a lot of debt from a long undergraduate career across several majors, so "how much" is unfortunately also a concern. I don't want to sell out cheap.

1. Are there applied math jobs in industry which focus on structural mathematics reminiscent of abstract algebra, earn an appreciably high salary, and aren't cryptography?

2. How would one best go about pursuing these jobs starting as a recent graduate / first year graduate student?

• No matter what you do, get at least one mainstream programming language under your belt such as C, C++, Java or Python. Apr 17 '13 at 23:23
• cstheory.stackexchange.com/questions/10916/…
– dls
Apr 17 '13 at 23:24
• I think the NSA must be the number one employer meeting your criteria. I know plenty of strong post-PhD mathematicians -- some of whom also have full-time academic jobs, in some cases at bigshot universities -- who work part-time for NSA and find it plenty interesting. In fact, that the work is very interesting is generally cited among their reasons for continuing to do it. So I wouldn't write off NSA so fast. Apr 17 '13 at 23:49
• I'm a published PhD with good letters and good GRE scores, but after graduation, my unwillingness to relocate and the subsequent difficulty of finding a permanent academic position pushed me into the software industry. I'm really enjoying what I do and learn, and I have time on the side to study mathematics and do independent research. I'm not saying I'm abandoning academia forever, but I could imagine worse fates other than staying in industry. Apr 18 '13 at 16:59
• I vote to not close this question.
– user38268
Apr 21 '13 at 7:17

First, let me say that I'm impressed by your maturity and wisdom. It's not easy to recognize your own limitations, accept them, and adapt. Most people have to learn the hard way, by living through a few decades of struggle and frustration. Some people actually enjoy struggle and frustration, though. Your choice.

I have been an "industrial" mathematician for 40 years (I "sold out" long ago). I work in the software industry. I don't have a Ph.D, and I don't write research papers (not very often, anyway). I don't spend a great deal of my time doing mathematics, and almost no time at all doing original mathematics, but I do write "mathematician" on my tax return every year. My work is interesting (to me), and I've made quite a lot of money.

From the suggestions below, it's clear that some people judge the fabric of a profession by reading its research literature. This is a hopelessly misleading approach. What happens in day-to-day work in any industry is very far removed from what you read in research papers. If you want to know what it's like working in industry, you should ask people who work in industry. And this is not a very good place to do that. Most of the people who hang around here are university faculty, grad students, and (recently) kids trying to get someone to do their homework for them. If you want to know what software developers do, for example, ask at StackOverflow.

I'll repeat some of the advice from others. Learn some computer science. Learn about basic algorithms, and get good at programming in some mainstream language like C/C++ or Java (not Haskell or OCaml). It's not that difficult, and it's great fun when your code works.

Accept that no-one is likely to pay you to do original research (except on a very small scale as part of a larger project). Especially not mathematical research. People in industry are expected to create working saleable products/processes/systems with a high degree of predictability. Research is too risky. If it were less risky, and the results were more certain, then it wouldn't be research.

Think about what it means to "sell out". One definition says that selling out is doing what society (and your employer) want you to do, rather than what you want to do. But society (or your employer) will only be willing to pay you if your work is valuable to them. So, in some sense, selling out is inevitable unless you're going to be a hermit poet or you're independently wealthy. The best you can hope for is that your work is interesting and fulfilling (in addition to being valuable), and that you don't have to do anything that you find morally distasteful. If you think that making money is distasteful, stick to academia.

To answer your question, I'm not personally aware of any places in industry where significant numbers of people spend time pondering the workings of abstract algebraic constructs. I don't say that they don't exist -- just that I'm not personally aware of them. My mathematical work mostly involves differential geometry (in 2D and 3D space), approximation of functions, numerical methods (root finding, minimization, etc.), very simple linear algebra, and occasionally a bit of algebraic geometry. I very rarely do any original mathematics. I typically use software packages written by other people, and I only need to know enough mathematics to understand the limitations of these packages and their applicability to my problems. If you want to work on the development of the mathematical software tools used by people like me, check out companies like Wolfram, MathWorks, MapleSoft, Rogue Wave, NAG. But be aware that these are (mostly) fairly small companies and they don't employ very many people. And they won't hire you unless you have good programming skills.

I mostly work with manufacturing companies -- people who design cars, airplanes, consumer electronics gadgets and so on. Think about what those companies are trying to do -- they want to create more attractive products, more quickly, with lower costs. How can you (and your expertise) help them do that? Contemplate this until you identify some place where you can imagine that you might fit in and be happy. Or, pick some other industry and go through the same sort of reasoning. The key is to find some place where your skills can add value.

Stop thinking of your work as your life. You'll still be the same person, regardless of whether you're winning Fields Medals or hacking code. Your children will love you just as much either way.

• Thank you again. This post has significantly affected my outlook in the past six months. Sep 25 '13 at 5:10
• Glad I could help. Good luck on whatever path you choose. Sep 25 '13 at 8:13
• Regarding your comment on programming skill, how long would you say one, with a background in years of experience in Matlab, reasonable amount of Python and VBA, needs to be competent in C++?
– Hans
Feb 17 '14 at 3:19
• @mathreadler -- I suggested that "selling out is doing what society (and your employer) want you to do". Certainly your employer will want you to do things that make money, and there are many ways to do this. I didn't use the word "constructive". And I'm much too old to be naive :-) Dec 30 '15 at 13:53
• @MathematicianByMistake -- Fortran is the traditional language of engineering computation. It still has a few advantages, but is used very little for development of new SW. I don't recommend spending much time on it. Matlab is a so-called "high-level" language, so it's not really comparable to Fortran. It's a good language for prototyping, but it's not used very much for production SW systems. C++ would probably be the best choice for you. It's an ugly and horribly complex language, IMO, but if you want to work in industry, C++ skills are very valuable. Nov 12 '17 at 4:34

The tech company Twitter is using a software library called algebird. From their GitHub page:

Abstract algebra for Scala. This code is targeted at building aggregation systems (via Scalding or Storm). It was originally developed as part of Scalding's Matrix API, where Matrices had values which are elements of Monoids, Groups, or Rings. Subsequently, it was clear that the code had broader application within Scalding and on other projects within Twitter.

Their discussion goes on to explain why they needed to write such a software library:

Implementations of Monoids for interesting approximation algorithms, such as Bloom filter, HyperLogLog and CountMinSketch. These allow you to think of these sophisticated operations like you might numbers, and add them up in hadoop or online to produce powerful statistics and analytics.

I asked around for why Twitter needs an abstract algebra library. One of the authors Oscar Bokyin, said it had to do with databases.

CS.StackExchange What are uses of Groups, Monoids and Rings in Databases ?

Cardinality can be thought of as a functor from the category Set to the groupoid of isomorphism classes in that category, which we identify was Natural #'s.

In their case, they need to estimate cardinalities of subsets on a scale where it's impossible to check the membership criterion on every single element of the set. So probabilistic counting methods come to the rescue, taking advantage of how these values are stored in a computer.

These probabilistic counting algorithms can be added, multiplied by scalars, etc. behaving like natural numbers.

I will jump on the bandwagon of answers suggesting computer science. Algebraic thinking is deeply embedded in the design of programming languages - especially categorical structures like functors and monads. As a teaser, the Java language was invented by James Gosling, whose thesis was titled "Algebraic Constraints". I know that Microsoft Research does a lot of programming language theory, and I suspect that that would be a good place to apply your algebraic skills to real software and make some good money in the process. You might try learning the Haskell programming language to get a feel for how some of these ideas fit together; Haskell makes some of these algebraic concepts show up right on the surface.

You would also probably do well at a company that uses functional programming languages, instead of designing them. For example, I know that the wall street firm Jane Street writes their software exclusively in OCaml, and I know they do some research on effective functional software design, and that they customize the language to suit their needs. These tasks can be algebraic in flavor, and while they would involve more structural design and less proof, a similar set of skills apply. I bet they pay good money for people who love algebra.

There are many other areas of computer science that rely on algebra. Others have mentioned graphics and robotics, but I would point to the common ancestor of those two fields, which is computational geometry. If you take a look at the Computational Geometry Algorithms Library (CGAL), which is the most widely used geometry library, you will note that it is based on an algebraic core (with concepts like "group", "ring", and "field"). As a shameless plug, doing computational geometry for fun led me to develop this very algebraic library. Computational geometry has to answer very discrete questions like "is this point on this line", and so a common approach is to represent numbers exactly instead of approximately. This means that you get to ignore all of those annoying analysis problems that come up when using approximation. CGAL has a pretty extensive list of projects that use it --- this may be a good place to find employers.

These two fields rely on algebra in different ways. Programming languages will use concepts like "algebraic structure", "functor", and "formal proof", whereas geometry uses concepts like "field", "ring", "matrix". So if you like designing algebra, the former might be a better fit, whereas if you like using algebra, the latter may be. Of course using something and understanding how it fits together always go hand in hand, so in either area you will have opportunities to both use and design algebra. Both of these fields also have a range of people working on them, from pure academic research to very applied software development, so you should be able to find a way to fit yourself in.

One more thought is that advanced physics relies heavily on algebra (although you also have to do integrals!) My senior-level course in Quantum Mechanics certainly relied on linear transformations, eigenspaces, and a number of related concepts. I don't know how you can "sell out" with that, but I'm sure it's possible.

• Your "Jane Street" link is down... Dec 1 '13 at 7:32
• CGAL is the most widely used geometry library?? That might be true in academia. But in industry the most widely used geometry tools are Parasolid and ACIS. Mar 25 '18 at 2:29
• Career in computer science, do you mean software developer/engineer something like that? Mar 25 '18 at 14:30

I suggest you to consider a career in computer science, where algebraic structure appears everywhere and analysis (to my knowledge) appear less frequently. But I must say it seems insane to give up one's mathematical career just because one thought he/she is not good enough in a certain subject. One year ago I even do not know what $L^{p}$ space really is(as you can tell from my questions), and now I am on the road to work on index theory using analysis. If you really want to work on mathematics you should not give up so early and so easily. Otherwise, you should quit math as soon as possible.

• I am not giving up, just looking at other options. The motivation has nothing to do with being bad at analysis (I'm okay at it, I just dislike it). It comes from being realistic about my expectations of academia. Apr 21 '13 at 18:28

Last years I had to deal with some generalizations of automata, and I found that in this theory there are plenty applications of algebra (primarily, semigroups and categories). I mean not only the classical results (Eilenberg, Arbib, etc.), but also new problems that appear in the study of very-very large machines. Perhaps, in this area you will be able to combine algebra and "selling out".

I remember reading that algebra, particularly geometric algebra, is quite useful in robotics. Basically, one can describe the ranges of motion of robot arms using abstract algebra. Here are two links that might spark your curiosity:

http://www.prometheus-us.com/asi/algebra2003/papers/selig.pdf

• While algebra may be useful in robotics, somehow I'm sceptical that the day-to-day work of someone who works in robotics will primarily involve algebra-like work. I'm guessing it's more something like: occasionally, the knowledge of algebra can come in useful. Apr 21 '13 at 7:43
• From my experience, people who write software that controls robots (and other jointed mechanisms) do make some use of abstract algebraic ideas. Not a lot, but some, at least. But the people who do this work are a fairly small group. The larger group of people who merely use robots don't need to know how this software works internally. Of the people who work in (industrial) robotics, I would guess that less than 1% know what a Lie group is. Apr 25 '13 at 3:22
• Note that both of the documents cited above were written by academics, not by industrial roboticists. Apr 25 '13 at 3:29
• Related to both robotics and computer graphics, so I'll put my comment here: professors at my university sometimes talk about using algebra and algebraic topology in computer vision. In fact one of the professors here does a lot with applications of topology. Computing homologies is certainly something that needs algebraic background, but is very useful in applications. (There are tons of books in the applied and computational topology direction! Check them out! Maybe topology will give you more ways to use algebra.) May 20 '13 at 3:37

Learn numerical linear algebra. Given that you have strong abstract algebra background, you will find linear algebra and algorithms to be cake walk. You may want to look at this question for more details.

Why study linear algebra?

Almost all jobs, where you want to do some sort of math, inevitably needs numerical linear algebra. I cannot overemphasize the importance of linear algebra, since most of the problems solved in the industry fall into two main categories:

$1$. Linear problems.

$2$. Linearizable problems.

• Agree. Linear algebra, and especially numerical linear algebra, have a wide range of applications outside of mathematics. I don't agree that it's a "cake walk" -- understanding the mathematics and creating reliable software are two different things. Apr 25 '13 at 3:35
• Hmm, sorry for the necro, but : Also once you have gotten up to speed with linear algebra you can start doing abstract algebra with your linear algebraic tools using for example representation theory. Jul 21 '18 at 22:17

I've just started looking into computer graphics as part of a project I'm working on, and it seems to involve a lot of linear algebra and a bit of abstract algebra. There are entire software development jobs that are just image processing and computer graphics in many different industries, not just defense and games. You may have to deal with some continuous math, but the closer you are to the VRAM the more likely you are dealing with just a bunch of integers. You might research Open GL and DirectX to get an idea of what's going on in 2D and 3D computer imaging.

• Yes, there is a lot of linear algebra in computer graphics. But it is very very simple linear algebra (mostly just fiddling with 4x4 matrices). Also, all this linear algebra has already been done by the people who wrote OpenGL and DirectX. People who use these packages don't need to know much linear algebra. Apr 25 '13 at 3:07
• @bubba: so wouldn't it be a push to work for Microsoft to work on DirectX? Apr 25 '13 at 16:52
• Maybe. But, again, the mathematical part of DirectX is pretty trivial, it seems to me. My guess is that most of the current DirectX development is aimed at making it go faster, which is a programming problem rather than a mathematical one. But, anyway, if the OP wants to find out what it's like to work on a DirectX implementation, I'd recommend that he go ask at StackOverflow. I doubt that anyone here knows much about this (including me). Apr 26 '13 at 1:42
• @bubba: I'm a professional software engineer working in graphics domain. I constantly use Direct3D (the part of DirectX which has graphics-related code) and OpenGL. Most code dealing with linear algebra is hand-written by programmers for their application. Also, there're lot of domains in CS where linear algebra is vital. Computer vision (OpenCV), parallel computing (OpenCL), graphics/game/simulation engines (OpenGL), speech recognition, bioinformatics, etc. to name a few. See this for a the complete list. May 21 '14 at 14:15
• Yes, it does seem that lots of people can't figure out 3D rotations. But, from a mathematician's point of view, this is a very simple form of linear algebra. Anyway, input from someone who actually works in industry is valuable, and is what the OP needs, I think. May 22 '14 at 5:01

NSA is not the only place for cryptographers. There are various research labs like HP , Microsoft Research labs where cryptographers and number theorists are hired.

Also, algebraic coding theory is another area where you can apply your skills of abstract algebra.

My profession as a DVB and Video/Audio Content Security engineer brought me to go over the Abstract Algebra. It allows me to go in depth of the every aspect of cryptographic primitive, as it prevails and pervasive in Cryptography.

• Now, in Digital video broadcasting , error correction in channel coding like Reed-Solomon, BCH codes and others are the classic example of Abstract algebra (group and its cosets, fields and rings). I see how simple looking cosets are used as a error correction in communication.