Math And The Computer Science Major
An anonymous reader writes "What sort of math are CS majors expected to take? Why are these classes useful? Does programming really have that much to do with math? Lineman.Net has published an article that answers these questions and more. If you are considering a CS degree, be sure to give it a look and make sure you are taking steps to prepare for your college career."
...demand more math than others. Artificial intelligence techniques, for example.
And what the article said about game programming is right on... trying writing even a simple Brickout clone without knowing basic trigonometry and you'll run into problems.
The Army reading list
As a student graduating (June) from a CS similar degree, I take this opportunity to warn/help inform others about such fields.
:-)
If you truly love programming and want to code for a living, do NOT attend such Universities as DeVry, many State Universities, or other small "tech" schools. This may sound like common sense to some, and outright madness to others, but trust me on this one. I personally am about to graduate from DeVry, and, although it's surprising reputation, they in no way prepare a student to enter the world of programming. The majority (I'd say 70%) of the skills I've obtained have been acquired by means of self-teaching and learning from friends.
More and more, I've been seeing that "programming" degrees focus much more on the management side of things, instead of the developer role. Perhaps this is because of the apparent problem of off shoring IT jobs? The main problem is not that the Universities have changed to this approach, it lies in the fact that the said schools teach in such a manner, WITHOUT advertising so. It brings about a sense of deceit and trickery...but perhaps that's what they were going for?
01000001 01011001 01000010 01000001 01000010 01010100 01010101
Not entirely unrelated question about high school math: A couple of weeks ago I was out with my little brother who recently turned 18 for a beer and to shoot pool. He was having trouble making shots so I said "Imagine the table is a large sheet of graph paper when you plan your angles and shots." he said "I've never used graph paper."
He's graduating from Grade 12 this year, am I just a relic[0]? What do schools use now to teach geometry? I hope it's not all done on a computer, the practical hands-on stuff is invaluable.
[0] I'm 38; mom died in '82, dad remarried and could still get wood.
Trolling is a art,
I am an engineer working with programmers and one of the biggest issues I have is getting them to implement some of the complex math in their code. Many struggle with it and that is a huge problem.
Evolution or ID?
Coding is not as important a part of computer science as you may think it is. CS is full of theorems and proofs. Computer science is the science of making algorithms more efficient. Programming is about implementing algorithms.
Useful?! You can't do anything without it. You can't study graphics without maths. You can't study 3d graphics and simulation without quite advanced maths. You can't study audio without maths. You can't study just about anything in computer science without maths.
Only a Mickey Mouse comp sci course would not require maths to quite a high standard.
I usually thought of it as the difference between learning how to program vs memorizing a bunch of useful code snippets and how to translate them to different languages.
You are in a maze of twisted little posts, all alike.
> we have to know math because the math majors cant program, usually
Conversely this is the very reason why physicists and mathematicians have good job opportunities in IT, consulting or banking. In many cases it's easier to teach a physicist programming (or economics) than to teach a programmer the relevant understanding of mathematics.
Of course it depends on what you're progrogramming and of course a programmer who is good at the kind of maths required for the job will have the edge anyway...
I find that the math courses I took in college had about as much relevance to the comp sci courses I was taking as the comp sci courses themselves had to the actual work I do as a computer programmer.
On the one end of the spectrum is pure theory, and proof, and on the other hand, we have complete practice, and "get it done now".
Math is a great theoretical background for computing, and made some of the algorithmic courses a breeze.
Ironically, I found the proofs in algorithms classes an attempt by computer scientists to say "see, we are a real discipline, we do proofs too", but I found that I wanted the CS courses to be a counter to all of the proofs and theory I got in my math courses. I wanted some "hands on" learning.
Once I got out in the real world, especially with languages like Java, even the CS theory/practice (this is a hash table, now write one), I found that most of the data structures/algorithmic stuff had been written and I just filled in pieces.
Where am I going with this? I guess basically that math is useful for comprehension in CS classes, but depending on the programming you do, you may not even use the CS you learn in the real world, let alone the math. But understanding is good.
Rhymes that keep their secrets will unfold behind the clouds.There upon the rainbow is the answer to a neverending story
It really depends on what you're doing. I tend to think of programming as split into two groups:
Computer Science programming - embedded, drivers, algorithms, etc...
Business programming - This involves moving regular data between buckets. Math isn't so important as common sense. Both seem to be in short supply.
It's been my experience that CS majors can perform well doing either. But there are other skills necessary for business programming that will allow a mediocre programmer to produce excellent work (such as knowing the business or being a wiz with SQL).
I speak from the perspective of a math major who does business programming. I work with a lot of other people who do just great but occasionally run into a brick wall when some strange math comes up. These tasks come up only rarely. The most common place to see a math weakness manifest itself is when they foolishly matrix a couple sets of data and everything grinds to a stop. Even that is easily fixed (as long as they tested full sets of data before going into production). The only time I've *had* to be involved was implementing some probability and statistics packages.
All things being equal, I'd take the guy with math. It means he can think, comprehend written works and probably has a good sense of when his numbers add up (very useful in business programming).
t
Ya know...maybe it's just my field (computational biology), or the fact that I've been in school for far too long, but the more I code, and the more math that I use, the more I see the two as different faces of the same beast.
You don't have look at much interesting software before you realize that the difficult problems -- the ones that are fun to solve -- are inherently mathematical. And conversely, once you start seeing programming languages as expressions of underlying mathematical forms, they start to become very similar to one another. And I'm not even referring to bleeding-edge research code, either -- look at P2P networking, and you're staring into the eyes of a massive, graph theory problem.
Anyone can write a shell script. Very few people can express mathematical concepts in code.
Let's try not to let fact interfere with our speculation here, OK?
As a minimum, I would suggest:
- Algebra, Analytic Geometry, & Trigonometry. Know this stuff cold. After 30 years in computing, I still use it every day.
- Logic. Ditto.
- Calculus up to, but not necessarily including Differential Equations.
Very helpful at times:- Linear Algebra
- Probability & Statistics
- Numerical Analysis
- Automata Theory (offered in CS departments)
And if you're really into it:- Number Theory
- Topology & Graph Theory
A good grounding in one of the "hard" sciences like Physics can also be useful. And if you've got an aptitude for music, indulge yourself! Remember, it's not just the content of these discplines that makes them valuable. Each one teaches you to think in different ways. And an agile, flexible mind will make you more valuable to your future employers.Go for an education, not just training!