10 ms·
What are the math heavy CS areas with high demand?
I'm an undergraduate student who's thinking about a double major in computer science and applied math. I'd like to choose a math heavy, high demand computer science area to specialize in. I like the utility and elegance of math, and I'm trying to find a CS area that uses many different branches of math.
I'd also prefer if the area changes relatively slowly compared to other computer science areas (so maybe not security).
I'm currently thinking that graphics or machine learning would be high demand areas that use a lot of math, but I'm looking for more suggestions and advice. Thanks.
- MaysonL 13y agoOperations research, optimization, disccrete math, machine learning, computer vision.
- agibsonccc 13y agoMachine Learning and its subfields or Actuarial are the top picks I've seen.
- davidxc 13y agoThanks for the reply. Based on the answers so far, machine learning does seem to be a good choice.
- maaku 13y agoActually computer security doesn't change very fast compared to other industries, and is probably a very good fit if you have a math background. But machine learning would be fun too. Stay far, far away from graphics if you are worried about rapid change. But really, find what you're interested in and do that. It may involve trying them all out, or reading up some reference works on each. Making an important life decision based on “what's in demand” is a very poor choice.
- davidxc 13y agoThanks for the advice. I actually didn't know that graphics changed very fast. I'm only partly making this decision based on what's in demand. As long as the area is math heavy and broadly applicable, I'll probably enjoy it. Also, I was thinking of "in demand" with a more long term view. I would think that security and artificial intelligence would continue to stay in high demand well into the future. I mostly just want to choose an area where I can use many different branches of math, so I keep my math skills in practice. I also like writing code, as long as it involves math and is not boilerplate or repetitive.
- eropple 13y agoGraphics programming isn't that fluid. A lot of hay was made about moving away from fixed-function to the shader model, but since then it's been iterative API changes and growth to better target certain goals. OpenGL is throwing overboard most of the dumb stuff from its earlier versions and is turning into a pretty nice API overall. Now there's a lot of innovation in terms of specific techniques to achieve certain visuals, but that's the same as any other field - read the paper, implement it. The core techniques should be fairly static for at least the next 4-5 years (because it'll probably take that long for GLES 3 to be widespread) and evolve incrementally after that. Change is not something you should be worried about there.
- maaku 13y ago> The core techniques should be fairly static for at least the next 4-5 years. That's very fast by the standards of other fields :) Graphics has only slowed down by comparison to its own rapid pace in the late 90's / early 00's.
- dxhdr 13y agoVery inaccurate and misleading. You're confusing learning an API (easy) with doing actual graphics programming. Graphics programming involves deep understanding of the target hardware. The level of sophistication of the hardware determines which graphics techniques to pursue for the best results. Often it's a balance of your ability to optimize along with achieving the highest fidelity of output. For example, availability of floating point render targets -- how do you use them, and for what? How does the hardware handle them? It's different across devices even in the same generation! How does the hardware optimize rendering of opaque vs transparent objects? It's different across devices. Let's get really specific -- how many cycles does a medium precision square root take? Do you use pow or not? How much does a texture lookup cost? Hopefully you can guess the answer by now -- it's different on every device. It gets exciting when a blend of API and hardware (which includes additional supported and unsupported extensions, which yes, also change with every OS/hardware combination) requires the invention of a novel technique to fully utilize the resources at hand. It's a continual balancing act of visual fidelity and performance with the end goal of squeezing out every last bit of memory and computational bandwidth. Enough about hardware which is really just an important detail of the field. Being a great graphics programmer requires keeping up to date with the community of blogs and published papers, all of which are a constantly updating source of experimentation and novel techniques. This doesn't even touch on the artistry involved. Being at the top of the field takes extreme dedication and is absolutely not a "learn once and refresh now and then" activity. Summary: real-time graphics programming is one of -the- most difficult fields to stay at the forefront.
- dill_day 13y agoI think your thinking is right, machine learning is probably a good area as far as jobs go. Depending on your CS interests you'll find what areas of math they use most. AI / machine learning, learn lots of probability and statistics. High-performance, scientific computing, graphics, maybe more of a focus on linear algebra. Algorithms or theory or programming languages, lots of discrete math, logics, algebraic structures, etc. Of course it's good to get a good grasp of the basics of all these, since they're definitely not exclusive, and which you'll get from your degree, and beyond that, well explore, and enjoy!! Good luck!
- davidxc 13y agoThanks for the comment. High performance and scientific computing jobs seem a lot rarer than AI / machine learning jobs, which is why I think the latter is a better choice for me (I have no preferences between those areas right now). I'm also fairly interested to see how AI / machine learning develops in the future, and I think it will involve more math, so it definitely seems to be a good choice.
- deleted 13y ago[deleted]
- achompas 13y agoIt depends on what side of AI/ML you end up on, though. The research-heavy side involves lots of math and requires a PhD (or a MS + experience, in industry); the data engineering & infrastructure side is almost solely coding (and distributed systems design).
- danieldk 13y agoAnd even in machine learning, the vast majority of the work is in feature engineering, which is applying domain-specific knowledge (e.g. linguistics) to generate discriminative features. You can only get paid for doing research on the mathematical side of ML if you work in academics or for e.g. Google. The rest will just use an off-the-shelf machine learning software.
- hgx77 13y agoIn my view, I vote for machine learning. In order to study better in machine learning area, you need to have better understanding in statistics, probability, matrix, optimization and numerical computation. machine learning just like a model, the important thing is that know how to build, it exactly mathematics can help us.
- deleted 13y ago[deleted]
- twiceaday 13y agoI graduated two years ago with this exact degree from University of Waterloo. My favourite subjects were Quantum Mechanics, General Relativity, and Computer Graphics. Throughout my undergrad I was somewhat hoping to go into game dev to work on graphics or physics engines. I ended up getting a ton of internship experience doing web dev, and now I work at Google. The math degree ended up being more of a hobby, and I'm ok with that. I am pretty lazy and so I found it hard to stick to my guns about utilizing both degrees on the job. You have to be prepared to move a lot, and to pass on very good opportunities. I prefer using my math knowledge for side projects and keeping it from becoming a job, though maybe thats just sour grapes.
- espeed 13y agoFor a glimpse into machine learning, check out Professor Yaser Abu-Mostafa's "Learning From Data" course from Caltech. The videos are online for free (http://work.caltech.edu/telecourse.html http://work.caltech.edu/telecourse.html, https://www.edx.org/course/caltechx/cs1156x/learning-data/1120 https://www.edx.org/course/caltechx/cs1156x/learning-data/11...), and its corresponding book is on Amazon (http://www.amazon.com/Learning-From-Data-Yaser-Abu-Mostafa/dp/1600490069/ http://www.amazon.com/Learning-From-Data-Yaser-Abu-Mostafa/d...). Also Professor Ng's course from Stanford (http://cs.stanford.edu/people/ang/?page_id=22 http://cs.stanford.edu/people/ang/?page_id=22).
- sumodds 13y agoI do Computer Vision/Machine Learning for a living, but would caution a little against super-focusing on a narrow area. AI in general is known for its AI winters, where jobs dry up and opportunities are far fewer and you could have a lot of people with undergraduate in ML (or whatever that era's AI is called). Now that said, who knows may be you might find it interesting enough that you may decide to go for graduate school. If I was giving advice to my younger self, it would be to learn Algorithms, Linear Algebra, and Probability really well. Get exposure to Machine Learning, and a little bit of Linear Programming. But if you really want to be able to apply machine learning or math heavy subjects to work, it might be a reasonable idea to do a Masters.
- kkowalczyk 13y agoI think you're setting yourself up for disappointment with unrealistic expectations. People that are in demand are programmers and good programmers code 90% of time. Some people, including yourself, suggested graphics but read the history of DOOM and read its source code: despite being a cutting edge technology at the time, 90% of the code is the non-math drudgery: reading and writing files, networking code, performant array and string classes, making the code cross-platform and cross-compiler, debugging code etc. Carmack certainly knows his math but he knows his C even more. Math might be helpful/necessary in some fields but if you're thinking about being a programmer (as opposed to academic/researcher), don't expect math to be more than 10% of your time. The rest is the same drudgery that the rest of us has to deal with on a daily basis.
- achompas 13y agoThis is an excellent point, although I disagree with 90%. Lots of a developer's time goes into QA/testing, design, and conversations about requirements and goals. I think developers spend much less than 90% of their time with an IDE open.
- roryhughes 13y agoSome do and some don't. It obviously depends on what you're doing.
- opminion 13y agoAgreed, and here's the cooking metaphor. A math degree in a job where the outcome is software is like a chemistry degree in Antony Bourdain's archetypical restaurant kitchen: amongst the sharp knives and hot tempers, you will be able to deduce and induce properly, but the food has to be served. But a math degree can give you confidence so that, when confronted with formal stuff you don't know, you know that you can know with a bit of effort. This is useful, for example, when reasoning with properties of algorithms. This is not useful, for example, when arguing about object-oriented design patterns which are not formally defined. So you will do well with the aspects of Machine Learning (as many others suggested) which can be formally studied; whereas the hand waving artsy pantsy experimental part will feel like cooking with Bourdain.
- primitivesuave 13y agoGraph theory - it has an immense amount of overlap with computer science.
- broodbucket 13y agoSure, but is there work in graph theory outside of academia? Obviously there are people who use it to solve real problems but I'm unsure if you can really get a job as a graph guy.
- primitivesuave 13y agoIt depends, when I worked at a big company that produced a CAS (computer algebra system) they had an entire team for building graph theory ideas into the software. When I worked at a startup working on urban traffic congestion, there was just one guy who had done some surface-level reading one weekend on max-flow-min-cut and some basic algorithms. Knowing graph theory definitely helped me get that startup job (and take over as "the graph theory guy")
- primitivesuave 13y agoActually, now that I think about it, I am giving you quite a microcosmic example. I agree that coming across graph theory jobs is tough, but its still worth knowing, at least at a surface level.
- jpeg_hero 13y agoQuant / algorithmic trading Computational biology Scientific/industrial simulation
- mfn 13y agoHow about computational finance? Finance is what drives pretty much all modern economic activity around the world, and the fundamental concepts in finance haven't changed for hundreds of years, which takes care of both the stable/slow-changing and in demand criteria. It is also heavily mathematical if you choose to focus on the quant side, with probability, statistics, stochastic calculus, PDE's, and even measure theory being used in some form. Also, software is becoming an increasingly important part of modern finance, with things like electronic exchanges, high frequency trading, complex derivative/option pricing, prop trading, and actuarial science. And the skills you'll learn in finance will be transferable to a range of other fields - advertising and cloud distribution, which pretty much drive most tech startups' revenue, heavily rely on concepts and techniques that you'll learn in finance. Here's an interesting course you can take a look at: http://www.algorithm.cs.sunysb.edu/computationalfinance/ http://www.algorithm.cs.sunysb.edu/computationalfinance/ Note that this is by steven skiena, the author of the well-known Alogrithmm Design Manual. Khan Academy also has a pretty extensive series on modern finance.
- davidxc 13y agoThanks for the great response. I'll also look into computational finance.
- sliverstorm 13y agoQuick question- are you aiming for a computer science/software job with lots of math, or a math job that involves computing? It's an important distinction. The people who are doing math with the help of computers (rather than doing software that uses math) are much more involved in mathematics.
- davidxc 13y agoI was primarily thinking of software jobs that involved lots of math, but that's partly because I'm not really aware of what math jobs are out there (and most math jobs seem to require a graduate degree, which I'm not interested in pursuing right now).
- achompas 13y agoThere's a machine learning path that fits this: study math/stats/algorithms, get a graduate degree, work on research in industry or academia. Your question is somewhat vague, though. Do you want to spend the majority of your time working on math? Even machine learning researchers only spend a majority of their time on annoying data cleanup issues, model coding, or data infrastructure. Further, as you become more successful you worry about grant-writing, lab management, or stressing about tenure (or, if industry, department cuts). What's your motivation for entering a "slow" field? Regression is going nowhere but ML's research frontiers are expanding rapidly right now. Note also that you won't land this work with just an undergrad degree, so you should add another 2-5 years of schooling if considering ML.
- dangero 13y agoDSP related jobs are pretty math heavy, albeit in a very particular focused area of math. These jobs are in demand and highly specialized, so you aren't going to see a thousand job postings, but when you find one, if you are good, they will want you.
- myfootsmells 13y agoeconometrics + algorithmic trading
- warcher 13y agoFormal verification of software and hardware systems relies heavily on mathematics, as well as an obvious core of computer science. (Not 'number' math, per se, but logic math.) Static analysis of programs, proofs of correctness, et cetera.
- frozenport 13y agoStay away from math. I would caution you that you haven't seen `real math` as an undergraduate who still has time to decide on your major - you will find that real math is not elegant. Math is baroque, infinitely deep and you success will entirely depend on the community and the perspective you get from your mentors. For example, conversations I had with math professors were able to frame problems so that I could look past the equations and understand the big picture. Then I had to describe it in the precise language of mathematics. I quickly realized that math wasn't that precise of a language - just esoteric hand waving. I then realized that Mathematics is a language that is unintelligible without context. When I did my CS algorithm classes, I skipped all the lectures and spent 8 hours doing homework from a textbook - my school is rated 3rd in the US. If you only take Math classes you will not find a job or find yourself in a situation where you have not learned the creative skill necessary to extend upon existing solutions.
- hgibbs 13y agoI don't agree with this at all. What is and isn't 'real' math is subjective and very hard to quantify. The 'feel' of mathematics depends on the field but people are often overwhelmed with the level of rigour required to communicate mathematically as an undergraduate. Saying Mathematics isn't precise seems really ill-conceived, Mathematics is very similar to Computer Science in terms of language: one can take a level of abstraction of a concept which simplifies it so that it is understandable. Saying that Maths classes are irrelevant in a workplace also seems ill-conceived and basically to be personal conjecture.
- triangle 13y agoThe courses he's taken so far should give him a good understanding of what applied maths is (which is the type that the OP is thinking of majoring in). The scarier, more baffling variety of maths is pure maths. In the US system, half-majoring in applied maths, you shouldn't have to do hardly any pure maths if you wanted to avoid it. Although pure maths can be extremely hard and initially seem quite arcane, I think you paint a picture of it which is subjective and in some cases factually wrong. I agree that maths is infinitely deep and complex, but that is exactly why maths has developed to be as elegant as possible. Good mathematics is about developing structures and analogies that allow people to drastically simplify and improve their thinking about complex situations. You are objectively wrong when you say that maths "isn't that precise of a language". Modern maths is extremely precise and the level of rigour is leagues ahead of CS. In the early 20th century, mathematicians were worried about how precise mathematics and its proofs were. To combat this crisis, mathematicians boiled down the inherent assumptions in maths to a handful of axioms, from which the entirety of maths is logically proven. Maths is not esoteric hand waving. I studied maths at university and in my experience, there are lots of opportunities to apply my degree to the real world. Even in a more standard software engineer role I've been able to use my maths knowledge to quickly develop solutions to problems my CS peers are struggling with (and visa versa). If anyone's interested in maths, do consider taking courses in it. It's a valuable, rich subject which has plenty of real world uses and plenty of jobs waiting for you at the end
- vladtaltos 13y agoGo for computer vision/pattern recognition. There seems to be a shortage of enough 'good' people for them - even in HN I read very low quality vision related blog news as if they are very good ones... (I remember an image rotation article a few months back...). There are very good CS guys here but vision/learning seems to be a bit underrepresented... I'm getting pretty good contracts for doing research work from pretty big US companies/startups and I'm not even located in US... I did electronics engineering in undergrad, signal processing in masters and computer vision in phd - also took some courses in physics. I sort of wish I did some formal math courses (optimization/graph theory/variational calculus) as well. Applied math will help you a lot in CV/ML domain so that's a pretty good idea for you to get it. ML is very hot and there are lots of people going after that but don't forget to check out the geometric part of the cv - finding camera calibrations, stereo, multiview stereo or the realtime stuff as cv is being used more and more in mobile apps... Computational photography is my new focus these days - I'm getting more queries about that... PM me if you like more detailed info...
- gaius 13y agoGo and be a quant at a hedge fund. All the maths (statistics, probability) and programming you could ask for (and people in the back office to do the boring bits for you).
- cynusx 13y agoMachine learning is very heavy on statistics and mentally engaging enough, the field is called data science and there is a very high demand for them.
- danieldk 13y agoLet me offer a different advice: go for computer science and a major with practical application, e.g. biology, chemistry, medicine, economy, or even linguistics. In our age we are increasingly seeing technology changing other fields. But there are relatively few CS majors who are proficient in another domain and there are relatively few non-CS majors who can engineer/program well. There is a lot of demand for people who can program and have domain-specific knowledge, e.g. in computer vision, market prediction, natural language processing, etc. The other advantage is that, even if the demand for computer science majors collapses, there may be opportunities in the other field (well, perhaps not in linguistics ;)).
- kineticfocus 13y agoFor a good overview from one of the big math guys: http://blog.stephenwolfram.com/2013/03/talking-about-the-computational-future-at-sxsw-2013 http://blog.stephenwolfram.com/2013/03/talking-about-the-com... Otherwise, I'd suggest taking a bit of time to think about the sector like a entrepreneuring hacker. Look beyond the well worn paths and take advantage of your current naivite.
- pallandt 13y agoMachine learning. If you also happen to be interested in finance, or think it might interest you at some point later, you could transition to quant finance (where machine learning will also be very usefull). See if this piques your interest for instance: http://janestreet.com/technology/ http://janestreet.com/technology/
- qwerta 13y agoConcurrent processing and database design. But for second major I would recommend some 'soft' science, such as finance, economics or accountancy. Most people on those fields do not know high math.
- rhhfla 13y agoThis article, "The Shape of Math to Come",talks about applying topology to large data sets. https://www.simonsfoundation.org/quanta/20131004-the-mathematical-shape-of-things-to-come/ https://www.simonsfoundation.org/quanta/20131004-the-mathema... Might stimulate your thinking.
- mandor 13y agoYou should definitely check "Operational Research". Although it is not as fun as machine learning and computer graphics, there is a strong industrial demand for strong mathematicians. http://en.wikipedia.org/wiki/Operations_research http://en.wikipedia.org/wiki/Operations_research Many of the work do not involve much coding but require advanced mathematical skills to transform the original problem into something that can be send to a "solver".
- Adrock 13y agoI did a dual degree in Computer Science and Math. My recommendation is to take the classes in both areas that you find the most interesting, with no concern for your career. Your career will span decades and unlikely to involve a steady focus on a single area, as either the environment or you will change. Personally, I've been working for 11 years in a variety of roles (PM at Microsoft, Product Analyst at a SF startup, Quantitative Developer in finance). You never know where the most valuable lessons will come from and how they will pay off. For example, my second Real Analysis class leveled up my ability to communicate clearly and precisely in a way that no writing class could have. Graph theory, automata theory, numerical methods, abstract algebra, and statistics have each made their way into my work, sometimes in ways that I never would have expected. If you want to ignore this, Machine Learning.
- vmsmith 13y agoI agree with adrock: take classes you think are interesting without a career in mind. Things will change way too much and way too quickly for you to plan a career around courses in college. The main thing you need to learn as an undergrad are thinking and communicating skills. Also, here's a good video that might give you some ideas: http://www.youtube.com/watch?v=0tuEEnL61HM http://www.youtube.com/watch?v=0tuEEnL61HM
- mcdemarco 13y agoBioinformatics.