Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Here's the skinny: I love math. I think math is fun and exciting and that it teaches you to think analytically. I also love programming. The ability to create systems and apps that no one before me has been able to do is also a very exciting and empowering feelings.

Here's the problem: I think that teaching myself higher order mathematics would be a whole lot harder than teaching myself anything that I could learn in a Computer Science program. From this I reason that I should major in Applied Math (with some Pure Math courses) and teach myself all the programming and development I care to learn. However, I plan on engineering software for a living.

Here's the question(s): I believe that once I get an interview I will be prepared to blow minds, but of course the problem would be getting the interview. Will companies throw my resume in the NO pile because I don't have a Computer Science degree? Also, would I be at a disadvantage when it comes to getting an internship? I strongly believe that a good internship prior to graduation is something that all undergrads should take on and I would not be very happy if I couldn't get one myself.

share|improve this question

closed as off-topic by gnat, Bart van Ingen Schenau, jwenting, Kilian Foth, MichaelT May 20 at 13:31

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – gnat, Bart van Ingen Schenau, jwenting, Kilian Foth, MichaelT
If this question can be reworded to fit the rules in the help center, please edit the question.

I almost only ever hire math guys as programmers. Seldom CS guys. (The latter tend to lack analytical skills.) –  Denis May 24 '11 at 7:09
add comment

6 Answers

More knowledge, more education is generally better.

Better in 2 ways: you know more stuff (which means you have a better idea of what you DON'T KNOW), and better because you can show to an employer that you have a wider knowledge which might set you apart from others.

Can you do two degrees? (When I went to University there was so much in common between computing and maths degrees that by doing a maths degree, then doing the final year of a computing degree you could come out with both degrees for only 1 extra year).

share|improve this answer
There is a joint major in Applied Mathematics and Computer Science available at my university. I could also double major in Computer Science (B.A.) and Applied Mathematics (B.S.) but I think that would require too many classes. I'll have a look and see! –  Joose Apr 25 '11 at 16:07
A joint major is a good move if you can do it. I'd also strongly encourage you to stretch yourself - consider an engineering degree instead OR AS WELL. –  quickly_now Apr 26 '11 at 5:03
I don't have the financial means to get an engineering degree on top of my current undergrad and with the way the engineering program works at my university I won't be able to get into the program. –  Joose Apr 26 '11 at 13:50
add comment

Will companies throw my resume in the NO pile because I don't have a Computer Science degree?

Oh, heavens, no - especially not if your resume demonstrates you have programming chops.

As a mathematician and chemist who taught himself programming, I was in your shoes many years ago. Nowadays, I'd suggest you do three things:

  1. Make some contributions to one or more open-source or academic research projects.
  2. Have some non-trivial code you've written to show at interviews.
  3. Make sure your resume/CV lists the languages and technologies you feel proficient in, and the programming project(s) you've contributed to.

In fact, Google and other top-notch employers have a history of actively recruiting people like you, because they know:

  • You can't get a math degree without being highly intelligent.
  • It's easy for a competent mathematician to learn computer science and become a skilled - even rock-star - programmer.
  • You probably already know a lot about discrete mathematics, linear algebra, calculus and differential equations, and other topics that can be important in many aspects and applications of software engineering.
  • You probably also have a deep appreciation for order, sequential logic, and elegance which is very useful as a professional programmer.
  • You will have a huge leg up on learning and developing lots of things many CS majors find hard, like algorithms, data structures, finite-state automata, graph theory, and the linguistic concepts underlying compilers.
  • As a mathematician, you're used to wrapping your head around weird ideas. The things you'll run into as a software developer will mostly seem trivial by comparison.

Because of a strong math background, even though I've had zero formal computer science education, I've had a great career as a software developer the last twenty-six years, and I have a blast doing computer graphics. Honestly, I haven't met a lot of CS grads who actually understand how JPEG image compression works... but if you've had any exposure to Fourier transforms, I'll bet you will as soon as you hear "apply a 2D cosine transform, and discard the high-order frequencies".

share|improve this answer
add comment

Anywhere that rejects somebody between a maths degree ,with evidence of computing knowledge/interest, in favor of someone with a CS degree is not somewhere that you want to work.

Anywhere good will bite your hand off - assuming the maths degree is from somewhere decent and you show some interest in programming.

share|improve this answer
Maybe you should be specific as to what qualifies as computing knowledge. Most corporate HR departments won't really look at any resume that doesn't have a CS degree in the education section. –  davidk01 Apr 25 '11 at 5:17
That's a good thing - it saves you having to weed out those employers yourself –  Martin Beckett Apr 25 '11 at 5:28
@davidk01: Maybe not for a first job, but any HR department that won't look at those resumes after the first job is incompetent and a liability for the employer. –  btilly Apr 25 '11 at 6:48
add comment

It is important to consider a job selection process not as something designed solely for the employer to decide on whether he wants to hire you, but also as a way for you to decide whether you want to work for the employer.

From this point of view, it also never makes sense to modify your resume to make your background more attractive to the employer. Simply get the education you want, apply for the internship you want and finally apply for the job you want, all using the resume that sums up who you are and what you actually want.

I firmly believe that there is always a shortage of competent and passionate software engineers. So if companies reject you based on some arbitrary selection criteria that have nothing to do with your competencies in relation to the job, they've just failed the selection process themselves and you should be happy not to work there.

Of course, there will always be exceptions to this approach, but that's not something you should focus on at day one. It's basically common sense: math is useful for any engineering job. So people that do serious engineering of any kind will always consider math graduates. Those that don't are unimportant.

share|improve this answer
I wouldn't say that I'm trying to tailor my education to what an employer wants, rather I am trying to tailor my education to what an industry wants. –  Joose Apr 25 '11 at 16:09
add comment

We recently rejected an applicant with a great math PHd, but no programming experience beyond MATLAB. He was told come back after you've programmed for a couple of years. Of course CS degree in itself doesn't mean you've done more than the cursory programming needed for classes. Clearly you intend on trying programming yourself. Try a variety of lanquages, not just MATLAB and python, and try to play with applied math concepts in them. If you can get an internship doing applied math programming, so much the better.

share|improve this answer
I don't intend on restricting myself to programming jobs that are strictly related to applied math, rather I intend to be able to do any software engineering job. I am teaching myself Java right now and I then plan on moving to Python, C, and C++ in a few years. My list of reading material includes the Pragmatic Programmer, Code Complete, Introduction to Algorithms (CLRS), Design Patterns (Gang of Four), and others. I intend to work on OS projects in my free time. I don't know that I would get a PhD in Math, although I would strongly consider a Master's in Applied Math. What say you? –  Joose Apr 25 '11 at 19:24
@brewer That depends upon your unique constellation of strenghts and desires. Personally (if I were magically made your age again) I'd go more the applied math route -but maybe your dreams are different? I think you have a good plan, keeping more options open is always a good thing, you never know what options will be available, and career paths rarely end up where you originally planned. –  Omega Centauri Apr 26 '11 at 15:58
add comment

Follow your passion - you'll always do better in things you're excited about

One thing to keep in mind is that the mathematics you do at high-school is different than the mathematics you'll be doing in university.

That said, try and pick a university that teaches computer science with a heavier emphasis on math. Do a degree in Mathmematics and Computer Science.

Look at what courses you'll need to do and think about which ones are more interesting. Whichever degree you go for if you plan to be a software developer you should at least take the introductory computer scicence course and some data structures and algorithms courses.

There is a lot of overlap between theoretical computer science and pure math. Things get blurry when CS degrees turn into some sort of programming or software engineering degrees. It seems that after all these years (>30?) academia still hasn't figured this out. A computer science degree should give you the tools to do research in theoretical computer science and that means a lot of math. It should not have the requirement of making you into a software engineer.

To be absolutely honest, having computer science on the degree is probably going to make it a little bit easier to get a job as a software developer. It really shouldn't be a big problem though if you're passionate and good.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.