Ask Slashdot: How Important Is Advanced Math In a CS Degree?
AvailableNickname writes "I am currently pursuing a bachelor's in CompSci and I just spent three hours working on a few differential equations for homework. It is very frustrating because I just don't grok advanced math. I can sort of understand a little bit, but I really don't grok anything beyond long division. But I love computers, and am very good at them. However, nobody in the workforce is even going to glance at my direction without a BSc. And to punish me for going into a field originally developed by mathematicians I need to learn all this crap. If I had understood what I was doing, maybe I wouldn't mind so much. But the double frustration of not understanding it and not understanding why the heck I need to do it is too much. So, how important is it?"
If a few differential equations are giving you so much trouble, you can stop worrying about learning advanced math. ;)
I have two resumes in front of me. I need someone who can write some fairly complicated software. Are they writing the kernel to an operating system? No. But they'll be making complexity decisions between a server and a client. Not exactly new or novel but important to me and my clients.
So I look at one resume and the guy has suffered through integration by parts, linear algebra, differential equations and maybe even abstract algebra. The other guy went to a programming trade school where those are not taught. The trade school likely taught inheritance, pointers, typecasting, and all that good stuff just like the Bachelor's of Science degree would.
Now do my solutions need integration by parts, linear algebra and differential equations? Absolutely not. But if I'm going to pick between the two, I'm going to take the applicant that solved more difficult problems in order to make it to a class. Few people actually care about those concepts deep in their hearts -- and I'm sure neither of my prospective employees did. But in that same vein, no rational developer is going to care at all that my client likes to be able to drag and drop files instead of doing file navigation to find the files he wants. But I want the applicant who's going to do the inane stuff that he doesn't personally view as important.
Challenge yourself. Take the math courses. Take the logic courses. Take the statistics and combinatorics courses. Take the finite automata courses. Prove to yourself that there are no obstacles in your way. They are a great expense of time now but they are a huge investment in yourself -- no matter how pointless they appear to you.
If I had understood what I was doing, maybe I wouldn't mind so much.
You should attack this problem two different ways: 1) increase the amount of time you allot to your own personal enrichment in these topics/courses (three hours is very little time if you are approaching new concepts in math) and 2) seek outside instruction as it's also possible you have a professor who doesn't understand what they're doing either (the teaching, not the subject matter).
My work here is dung.
If you think advanced math is "anything beyond long division", you are probably going to be in trouble.
"Good at computers" ?
you should put that on your résumé.
If you're doing quants work, or business intelligence, data mining etc, sure. Hardcore math is a must. If you're developing business software or something like that, it's more important to know Djikstra, the gang of four and closures.
Science advances one funeral at a time- Max Planck
Mathematician here. You're learning differential equations to prepare you for lifetime of abstraction, to sharpen your skills in symbolic manipulation. Those differential equations probably won't really enter into the game... but who knows, you might end up doing game physics which is nothing but a massive differential equation solver.
But I'm here to tell you that differential equations are not advanced math. Take a discrete math class to get a taste of what 'real' math is for a programmer. Take data structures. You'll find yourself doing formal proofs (real math), and it will be extremely applicable to the rest of your programming career. That DE class is there just to make sure you can manipulate symbols.
If you're developing business software you're going to need stats. It's inevitably going to rear it's ugly head sooner or later.
My Other Computer Is A Data General Nova III.
I hated math in university, I still hate it now, but over a 25 year programming career math has turned out to be the single most surprisingly useful thing I learned in university. Calculus, statistics, trig, I have needed them all in my programming work. I wouldn't have the cool job I have now if I couldn't do the math.
If you're not going to need much math, you proabably don't need a CS degree either.
Give me Classic Slashdot or give me death!
Advanced calculus/linear algebra is a must for game engine development. I try to read articles about rotating 3D objects.... *WHOOSH* over my head. But I've done well for 13 years doing IT client/server programming and just looking up the occasional algorithm for lat/long distance calculations, permutations, etc. Still need to be able to translate math formulae into a computer language though.
Sig. Sig. Sputnik
Differential equations - control theory and anything that brings you in contact with engineers (or if you want to work in finance)
Linear algebra - signal processing, computer graphics (don't even think about doing computer graphics without knowing linear algebra)
Logic - system modeling and software verification, and basically everything else
Calculus, discrete mathematics - high performance computing, simulation, communication, anything that brings you in contact with physicists
The bottom line is very simple. If you have the math - and I'm talking diffeq and applied mechanics and dynamics - you will get jobs that others cannot. And strangely enough, those jobs pay very, very well.
Just like everyone else says, if you're content being a web programmer at a medium--to-ok salary, then forget the math.
If you want a job writing control code for F22's, at a salary that can make your head spin, then consider the math as supremely important.
Don't take life too seriously; it isn't permanent.
Bullshit. You want to develop game engines, you have to know how to move things around. You have to know how to create a world. You have to understand what your team is doing, and understand it at a gut level. This isn't rendering, this is creating a world.
So learn your math well. It will give you an additional layer of depth that will differentiate you from those who don't.
Disclaimer: I just coded up some low-precision trig operations. I'm generating some simulated waves in the world I'm creating. Costing hundreds of trig calls per frame, and figure 50 frames per second... My routines are around 3 to 5 times faster than system calls, you want to look up that hundreds per frame at 50 fps again? It means I have a lot more CPU available for other tasks. Math. Taylor series. Error analysis. Makes me the person that gets hired instead of the one that gets passed over.
Even when doing graphics programming most of the fancy math is already handled through frameworks. You don't actually need to know how to do vector calculations...
Unless you want to actually work *on* those frameworks... Someone has to develop/maintain the tools the rest of us simply use.
It must have been something you assimilated. . . .