Ask Slashdot: How Many of You Actually Use Math?
An anonymous reader writes with a question that makes a good follow-on to the claim that mathematics requirements in U.S. schools unnecessarily limit students' educational choices: "I'm a high school student who is interested in a career in a computer science or game development related position. I've been told by teachers and parents that math classes are a must for any technology related career. I've been dabbling around Unity3D and OGRE for about two years now and have been programming for longer than that, but I've never had to use any math beyond trigonometry (which I took as a Freshman). This makes me wonder: will I actually use calculus and above, or is it just a popular idea that you need to be a mathematician in order to program? What are your experiences?"
The bulk of programming jobs have nothing at all to do with math beyond the high school level.
Its mostly counting beans and keeping records. Really, it is.
Gaming, (image rendering and manipulation), statistics, and rocket science are a few of the obvious areas that come to mind where more advanced maths may be necessary. Even these fields have packages available to do the heavy lifting once you figure out what it is that you want to do. Knowing what to do the key. This kind of programming constitutes about 1% of the available jobs and 98% of the chest thumping on slashdot.
Sig Battery depleted. Reverting to safe mode.
If you want to be an efficient programmer in some specific domains, an understanding of higher math allows you to optimize your code. In game development this becomes important when you are trying to have your cutting edge game run on older hardware.
Try to read a serious book on graphics or game engine architecture then tell me how much math you need.
How Many of You Actually Use Math?
Last I added it up, three of me.
Knowing advanced math increases opportunities available too you. If you do not choose to use what you learned, you still have the opportunity to choose. If you never learn the math then you will encounter situations where you will not be qualified to understand or perform the task you are presented with.
.. especially if you want to do game development. Game development is VERY math heavy.
Computer Science is a mathematics discipline. The more math you take, the more your brain will be trained in the logic, reasoning and other skills necessary to be a good software engineer.
If all you desire is to be a code monkey, do CIS.
So that you can have a better understanding of algorithms and recurrences
Basic set theory and some discrete math for writing proofs, that's basically all you need to complete a CS curriculum. There is no calculus at all unless you search it out.
The only math course in college that I felt applied directly to software engineering was discrete math. It's all about logic, graph theory, etc. and provides the basis for computer science.
That said, most software doesn't really require calculus, geometry, or even trig. But certain fields (AI comes immediately to mind) require a significant math background.
There's no -1 for "I don't get it."
Comment removed based on user account deletion
go google quaternions, or rotation matricies
properly understanding these sort of techniques that are used widely in 3D programming applications without having knowledge of linear algebra is damned near impossible
It doesn't matter if you use it in practice. You'll learn to think critically to solve abstract problems. Don't buy into the hype that you don't need math.
Calculus is virtually unused in computers. It was designed as a shorthand for a world that didn't have computers. What you need to be learning instead is Linear Algebra.
now we need to go OSS in diesel cars
Depending on what sort of programming you end up doing, you'll likely use some higher math. I've used linear algebra for some graphics works and stats for a whole bunch of stuff. Haven't had occasion to use much calculus though. It's worth learning to keep your options open for sure.
I clicked because I thought the topic was "Ask Slashdot: How Many of You Actually Use Meth?" I was looking for a support group :(
I think learning higher level math helped me learn the logic necessary to do my job. I don't ever use the higher level math, but the logic required to do such math is invaluable. I'm not saying you need it to write code well, but I think it helped me.
Others do what they can, mathematicians do what they want.
You are probably not gonna use what you learned in Huckleberry Finn or History, either.
There's a reason these are taught, and it's not all about pure facts.
(-1: Post disagrees with my already-settled worldview) is not a valid mod option.
Once I had to program a cursor to move diagonally across a window. While unchallenging, it was probably the pinnacle of my mathematics programming. Sometimes I have to remember to divide by 1024 instead of 1000. There you have it. Most of my life centers around multiply nested loops peppered with if-then statements plus regular expressions.
Please do not read this sig. Thank you.
I think they say that to keep idiots out of programming... Prime example, Apple developers require no math skills because all their programming is done by clicking on pretty icons that are pre-configured for each function they want to do. Programming for Microsoft requires no skills what so ever, as demonstrated by how well Microsoft programs run.... If you happen to be good at math and interested in programming you may be interested in trying to figure out how to develop a really basic software suite and getting Microsoft or Google to buy you out of it... That may be the best use of your math genius yet...
I don't use much math in my work on radio telescopes, which is mostly making gizmos to control physical stuff. Someone else worked out the algorithms long ago, and I do the hardware end of it.
But I work with coders who have to do some rather intense math to solve problems (mostly coordinate transformations or path generation) that had been solved poorly in the old software.
The determined Real Programmer can write Fortran programs in any language.
While programming is not necessarily math-heavy, mathematics gives you experience with problem solving, sometimes in unconventional ways. It's really the only technical problem-solving you do in school, and it's an important learning step, for what it teaches indirectly as well as what it teaches directly.
If doing fourier transforms isn't math, I don't know what is
It's not necessarily the actual math skills that are important - it's the understanding of the concepts behind it that will increase your understanding of any kind of process, job, or task - programming being one of them. Knowing what the area under a curve means is probably more important than knowing how to calculate it.
I don't use calculus or any kind of advanced algebra in my day to day work (in communications, far from programming) but I'm sure glad that I understand the basic concepts, thanks to a first degree in engineering.
Although you might not use a lot of advanced math learning it changes how you solve problems. I found it abstract algebra and formal logic the most useful.
If you really want to get into game programming, the advanced math will be your friend. Supposedly even some ancient (and infurating) concepts like quaternions are coming back in computer graphics. For anything else, it still isn't going to be a waste of time. The analytical skills and "mathematical maturity" obtained by taking a good calculus course (and actually applying yourself rather than just trying to pass) will go way further than the actual calculus will for most people.
I work on a 3d modeling package, I'd say math is a very occasional thing. And then it's not math, it's math concepts. And it's trig + matrix math. The vast majority of the time you use the pre-existing methods other people have created and there's no need to understand what they do. The best way to learn that sort of math would probably be to go and buy a book on 3d game programming and work your way through it.
And the vast majority of the programming you do has nothing at all to do with math. Which is good, because I struggled with math.
Checkout ai-class.com to see some of the ways in which Math gets used in computer science. That class touches on just a few topics and doesn't go very deep. When you work in the machine learning field, there is a lot more math that you'll find helpful.
Realistic physics requires it. On top of that, the more math you learn before entering the field, the more opportunities will be available to you as a programmer. Don't cripple yourself while you're still young.
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
I have had to dust off trig for programming biz apps, such as location searches. (Remember the earth is not flat)
I have needed some stats for modeling. Did I need calculus??? Its hard to say, I think having a couple semesters helps with stats and understanding trig. Although it did make me have a health hate for Newton.
I would say:
Trig
Differ and Integral Calculus
Stats Class
Discete Math
Linear Algebra (For graphics)
How many of you use the problem solving skills that were developed in math class? I may not use math everyday, but I certainly solve complex problems that I'm sure others with less math education would struggle to solve.
It depends on what you want to do. Here's a simple example: if you want to write games with Unity then basic maths will see you just fine, but if you wanted to write your own competitor to Unity, then you'd need a higher level of maths. Same applies to OGRE, and Bullet, and... the list goes on.
After about three months of relentless Willy action I reckon I'm now as good as when I was 10.
I work with data acquisition and signal processing, and yes, we absolutely use a lot of math. We use advanced calculus, and DSP tools and all sorts of other things.
Yes, there are computer tools that do much of the heavy-lifting and heavy-thinking for us, but without the foundational math, we would not understand what the tools are actually doing.
Also, I've found that the types of engineering jobs which require more math generally get paid more.
Compare for instance, the average salaries of video game software devs to DSP experts to physicists designing new transistors.
Logic is math, and EVERYONE needs logic.
Even if you never write a proof or solve an integral in your working life, it's important to understand how math works. Life, all of it, is one big word problem. If you don't have a basic understanding for the mathematical nature of the universe, you're simply not going to be able to navigate it as well. If you don't understand how mathematical arguments work, you won't be able to offer useful opinions on the matters of the day.
I'm not sure that everyone needs to know calculus, but everyone needs to know what calculus is and what it's used for. Everyone needs to be numerate.
Give me Classic Slashdot or give me death!
The more math you learn, the more tools you have with which to approach solving life's problems (and programming too). Why would you want anything less than a full toolkit? Learn all the math you can, it will serve you well as a programmer.
...then you certainly won't use any. If you do know some and are comfortable with it you will find many uses. On the other hand if you struggle resentfully through the minimum required math certain that you will find no use for it, you will be right.
Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
I use the phrase, "If I had a dime for every time these morons keep asking the same question." I keep adding up how much money I would have if I did charge a dime per dumb question.
We will bankrupt ourselves in the vain search for absolute security. -- Dwight D. Eisenhower
I personally use advanced math (well beyond simple calculus) every single day.
Sure, most programming jobs (or jobs in general) don't require nearly that much math. However, I have access to many jobs that are simply not available to most people because of those additional math capabilities. Basically, I am qualified for all the typical jobs that don't require much math, plus a bunch of other jobs. And the kind of jobs that do require lots of math tend to be high paying, highly stable jobs that aren't in danger of getting outsourced to some cheaper guy in India.
So while you don't need to know lots of math in the strictest sense to be a highly skilled programmer, you are really cutting back your options at a very young age if you blow it off while you are still in your teens. For example, you aren't going to be able to do any kind of physics or engineering based programming if you don't know something about differential equations.
I also recall seeing a study a while back showing that income was more strongly correlated with mathematical abilities than any other school subject. Maybe that was just some kind of propaganda being passed around my department. But math heavy jobs sure do seem to pay well and be fairly stable.
90% of programming jobs are business logic for companies to use in order to run or operate services. It nearly never requires any knowledge of math (more often than not the guidelines describing the business logic of the flow are so strict you don't have much freedom in design).
Among the rest of the programming jobs, you have user-facing applications which, again rarely require anything complicated (they just have to look nice and be stable).
The principle area where you will need a high degree of math competency is if you are programming/working on model simulators. Representing real life objects, movement, trajectories, 3 dimensional fields, etc, on computers can be incredibly complex.
Note that this is actually (from my point of view) where the most interesting work actually lies. I personally hate web development and user-facing applications, and business logic can be interesting because it varies greatly depending on what you're working on, but simulators are where the truly ingenious programming is I would say.
I am, of course, over generalizing, but I think the point is valid.
Clearly I've been watching too much Breaking Bad.
The CB App. What's your 20?
Trig as you already know is great for 3d stuff.
Calc is great for decision logic and business intelligence
Stats are great for business intelligence type work
As someone who did horribly in high school and college math, I did the minimum for my degree. I've retaught myself much of stats and calc because I found them useful in my personal projects. I find them more rewarding now that I have applications to use them in. I was a bad student though early in life. YMMV
Most of the math in the corporate programming world is really elementary. Basic algebra or less.
making simple games in UNITY doesn't require much math, but doing stuff like creating new engines or modifying the engine like in the AAA titles requires math. or actually creating the engine and coding in NEW FEATURES in for the first time requires math. how do you think all those new features get into UNITY and UNREAL in the first place?
not like the boxes to add a light source and have it bounce off water appears by magic
Did anyone else read that as 'How many of you Actually use Meth?'
I did, actually. Not that it's a bad article, but it was a little anticlimactic when I though I was going to read about some doper on here.
My current job title is "Bioinformatics Analyst," and I need to at least understand a good bit of math that I didn't learn in highschool. While it's rare that I directly need to implement complicated mathematical programs, much of my job involves tuning parameters for specialized software.
I need to have a good understanding of the changes that are likely to result from adjusting parameters X, Y and Z before I submit a job that takes upwards of a day to complete. To do that, I need to read the papers and understand the algorithms.
You don't really need math. But the thought processes learned through math training are really useful.
I use more math doing air and sea navigation than almost anywhere in my life. At sea I use a sextant which requires some easy worksheet math and some tables, dead reckoning with the air speed and a stopwatch is used at sea and in the air, also measuring the angle from VOR beacons.
Otherwise it seems to be figuring out the grocery budget.
I'm the CTO of a game studio that makes console and pc games. Multivariable Calculus, diff EQ, and most importantly Linear Algebra all come up on a regular basis- we have our own game engine, so we build the graphics, animation, physics, AI etc libraries that require this stuff. When I'm hiring leads, I look for ones that understand higher math. It's true that you can get by fine as a gameplay programmer without understanding math, but if you want to be an engine programmer, or a lead, then you'd better learn this stuff.
For what it's worth, learning calculus teaches you a new way of thinking that's valuable in many aspects of programming- not just when writing code that does calc.
I use linear algebra and calculus everyday.
As a geomatics engineer, my programming often involves using and understanding different levels of vector calculus as well as some basic linear algebra.
By the time I'm 30, I probably won't use it as much. In the meantime, I use it everyday to solve different problems.
Your plans may change, either because your interests change or because of circumstances beyond your control. Also learning higher maths helps your problem solving skills and mental agility. If you dislike educating yourself just for the knowledge or simply want to take the path of least resistance towards what you perceive as a fun profession perhaps you should re-evaluate your motivations.
Reading Slashdot headlines is not normal.
On Meth, it is.
Meth. Not even once.
APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
If your game needs to simulate physics and your programming library and tools don't do that, you will need the appropriate equations. Proper physics equations can be complicated and involve calculus. A good example is moving a vehicle around a curve realistically. There you need math to simulate the equilibrium between forward motion in the curve and centrifugal force that want you go straight.
The more you know the more opportunities you will have and the more earning potential you will have. I've used college level math in programming projects before. I have a friend who's a PhD making buckets of money doing very high level math. So if you want to make buckets of money doing high level math related programming, you will need to learn high level math. If you're comfortable making decent money limited to projects going no higher than high school math, then that's all you need.
So Trig is like 3 houses in Monopoly. You've made a huge leap in earning potential but you're not at the top yet.
Work Safe Porn
Purity
The CB App. What's your 20?
If you can't do the maths up through at least a year of linear algebra, and didn't make at least a B, I don't want to hire you for any of our technical jobs.
now we need to go OSS in diesel cars
> will I actually use calculus and above, or is it just a popular idea that you need to be a mathematician in order to program?
An error in the question: assuming that knowing calculus makes you a mathematician. Calculus is to modern mathematics as "Force equals mass times acceleration" is to modern physics.
Most programming jobs won't require things like calculus. But not learning it now will effectively [i]shut you out[/i] of those jobs where you do need it. And while technical knowledge quickly becomes obsolete, learning how to do (for example) proper differentiation will never become outdated. So it remains a good investment.
Just because you don't necessarily use those tiny little watch screwdrivers everyday doesn't mean you aren't helped out by knowing a bit about how to use them.
Either way acedemics is not about learning exactly what you need to do your job it's about proving you have the ability to learn and reason full stop.
The end of your formal education is not the end of your learning. Most of what I need to do day to day is not stuff I learnt in school but I imagine it would be considerably more difficult for me to pick it up if I tried to focus incredibly narrowly on specifics as if things could be so neatly deliniated.
In my experience, the time to get the math background is not when you need it, but before. I was able to teach math and science at the middle school level because I added a math minor to my education degree (it also meant more money, but that's another story). My advice to high school students is to get all the math they can in college (at least as much as they can afford). It simply increases your options when looking for employment.
People are throwing numbers at you all the time in the media. Most people can't tell whether what they are hearing is BS or not. That's not good for democracy.
I don't care if you don't like it. If you can't handle a little math, I'm sure as hell not going to hire you. Quit your bitching.
I'm a math professor, so yea...I use it a fair bit :)
As to the calculus question (and to follow up on a previous post): you really need linear algebra. But typically it is taught at a level that requires you to have gone through calculus. Not necessarily because you need the calculus, but more because you need to be a mature thinker and two semesters of university calculus will help train you.
I dabble in a little graphics programming for research visualization, and I actually find myself using calculus a fair bit. For example, if I'm trying to find tangents or normals to a curve or surface, I will use results about derivatives. In the full 3d world you need to marry this with linear algebra to properly express the multivariable stuff, but for 2d, a single semester of calculus will probably suffice.
So take linear algebra, and calculus up through multivariable. Even if only some parts of each course are useful, it'll make you a better thinker.
There was that one time I was able to do a Group Transform. It was mostly lucky and it made no difference.
All your database are belong to U.S.
The key areas for math in general computer science are algebra and statistics. Even if you are not actively using algebra, the thought processes in programming are very similar. Statistics are critical for analyses of system behavior. Linear algebra is useful occasionally, but mostly it's just something that is nice to have been exposed to.
I never use calculus, but it was in taking a calculus class that my algebra skills solidified, so the coursework was not wasted. In general, you should always progress one step further in coursework than you expect to actually need.
Also, there's a big difference between knowing enough to get an entry-level programming position, and knowing enough to have a career where you end up designing major projects.
The question implies the person expects math to use or manifest itself. The individual must ACTIVELY look for problems to understand in mathematical ways.
The parts of your program that change, find ways to express them in calculus. The parts of your program that have unknowns, find ways to express the knowledge in algebra. Math offers you elegant ways to express yourself, mathematics doesn't appear as a passive knowledge that you can just do a few problems on paper and expect math to leap onto your computer screen.
Do you need Math? Absolutely not, you are free to be as mediocre as you want. You can write out 16+16+16+16+16 every single time. Do you need art? Nope, you can make everything in your world as simple, functional, and mechanical, as devoid of color and beauty, as you want it to be.
You create your reality, and you are free to create it without applying mathematical concepts. The people who can't see the value of knowledge and collect it just for the sake of saying "I once took math, not really good for anything..." or "Oh, I took french in high school. I can say 's'il vous plait'." we call them dilettantes.
At first you won't see the ways your knowledge applies without hard examination. Eventually patterns will appear subconsciously and you can move on to actively seeking more complex patterns. If you can't see any patterns where mathematics can be applied you're not really looking for them.
I am not particularly talented in math(s). Math is hard for me.
I do not use much math(s) in my day job.
I consider math(s) the single most important subject I studied in my education, from third grade through Master's degree.
Education is not the same as training.
One can train for a vocation.
Coding is a vocation.
Do not study math(s) or attend a university if training, not education, is the only goal.
I'd just say Calc keeps you on your toes.
Trig, Multiplication, Long Division, Addition, Subtraction, Optimization. All good to know/remember... I'd say I use'em all on a daily basis.
Plus, when there's that one instance where it would be really worth it to use optimization and no one else knows it, and you can do it in a couple of minutes... feels pretty good.
Which is also why there is a lot of high school level code out there.
If you never learn more than you need then you'll never know if you have learned as much as you need.
Learning more math won't always make you a better programmer. But it will show you whether you can do something better than someone who knows less math.
If you want to get into post-graduate studies, this means taking the GRE test. There's a lot of math on the GRE that you have to do quickly.
None of it is terribly difficult, but I found that I was very out of practice, which slows me down quite a bit.
If you can do high school math in your head quickly, it vastly improves your score.
I've been in the CS industry for nearly 12 years and offloaded nearly all my high school era math off to calculators and spreadsheets. Very rude awakening when I took my first practice GRE.
/sig
PhD chemist here, just to give an idea of my work and complexity level. I do a huge variety of algebra regularly. I also do occasional trigonometry and a lot of statistics. Simple linear regressions are always important, and a certain amount of other curve modelling. Calculus? Never. Haven't touched it since grad school, but I did have some use for it then in error analysis studies (multi-variate derivatives to be specific). Then again, I think studying calculus helped me in algebra. It got used so often in manipulating the equations that it became second nature while the calculus remained more challenging.
Whether or not you need math really depends on the type of programming that you're doing, but it can creep up in pretty mundane areas. For example, suppose your program is doing some sort of tedious calculation and you want to display a progress bar or an estimate of the amount of time remaining. If things are somewhat complicated, you may need to fit some parameters to estimate time remaining. Fitting generally means finding parameter values that minimize some quantity (like squared error), so now you're into calculus (take partial derivative, set to zero, solve for parameter value). Of course, you can probably find a formula in a book but you may not truly understand it, or when it is applicable, if don't have a basic math background.
Yeah, you'll notice that a lot of the richest and most successful people never completed college. And that's fine but in my humble opinion, that's a risky bet to take. I've done interviewing for developers for a fortune 500 company and seeing a college degree on the resume doesn't cause me to kick back and say "Oh thank god, they have taken Multivariate and Differential Equations calculus, now all my Spring applications are going to be able to compute the triple integral (by parts) of a toroid in three dimensional space as it passes through a fluctuating field exerting a force on it!" (Yes, I know that makes no sense at all) No, what that tells me is that we're going to be able to throw you in an environment where you have no clue what to do but resources to go out and find what to do. On top of that, you're going to be able to digest the driest and shittiest of documentation (like a calc book) and come back to me and have gleaned some working knowledge from it. Sure, you might have to go to the next cubicle and say "What is up with this stack dump?" And you may have to seek out an authority (like a professor) but you're going to come to some answer for our problems.
In short, it tells employers that you know how to play ball and high order concepts don't frighten you. I'm not going to throw integration by parts at you on the job but it is good to know that you stepped up to that challenge -- even if it was just to get to a final, pass it and move on. In short, I went to a liberal arts college, I took classes on music theory, calculus, physics, Native American studies, advanced literature, etc and in those classes I created four part inventions, mounds of calculations, papers, powerpoints, etc and I have used little if any of that in my day to day job post college. But in mastering those processes I learned how to play ball. Now, I'm not saying you need to go take music theory and Native American studies. But the thing with Calculus is that all software development is logic and math. So don't you think you'd want to get all your i's dotted and t's crossed so that any employer that looks at you knows you have studied beyond the requirements of math for writing software into a realm so lofty they won't even be able to use it? I'm sure glad I did.
My work here is dung.
Advanced Math simply isn't used. The college math requirements are just there to cull out the weak members of the herd. This is why Computer Science Majors don't have as many idiots running around as Business Majors do. (or Political Science, Marketing, etc.)
Adidas To Bring Back Sneakernet
Computational complexity theory requires knowledge of set theory, number theory, abstract algebras, logic etc. You certainly don't need to know computational complexity theory to be a programmer, but is a good example of the kind of deep fascinating knowledge that will make you a cut above a code monkey. And big O notation, how long will that algorithm take? In reality is that these mathematical skills are not necessary for most jobs, but they make you more competitive in the job market. They make programming richer too. And, yes, I use math all the time even calculus as I do astrophysical simulations.
Comment removed based on user account deletion
I developed a game using Unity3D.
I make heavy use of trigonometry, and a very small part of calculus.
Your question really depends on what you want to do:
There are other fields that are not typically taught in math courses but in CS that are heavily math related. Like performance analysis. This I use a lot, but once again, it really depends on what you work on.
I do a lot of database work so it's set theory all day long. It's in a bit of disguise as it isn't what normally is though of as math but set theory is a math field.
I once used differential equations to solve a problem of how to optimally transmit parts of an on-demand video program on multiple multicast addresses to minimize the start time to view the program. I'd say that was the only time I ever solved a differential equation outside of class.
As someone with an electrical engineering degree, I have to say that you really need to understand vector calculus to understand electromagnetic fields. But frankly unless you are designing microwave circuits or antennas, even that knowledge is rarely tested in a work field.
If you need to read any scholarly papers to pick up on new technological ideas, most will contain some calculus equations. Generally you don't need to really know how to solve the equations (as they will solve them in the paper), but you may need to at least understand what is going on. Kind of like knowing how football is played allows you to enjoy a game, even if you haven't thrown a football in 20 years.
Most knowledge of error-correcting codes and cryptography is more algebraic and number theory rather than dealing with calculus or differential equations.
On the other hand, every day I seem to have to convert from bits to bytes and back again.
A lot of people applying for the jobs you want will have taken many math classes. Think about what your resume says if you don't have those same difficult classes. Can you replace them with something that will tell the employer you are even more qualified?
Discrete Math and Linear Algebra have been the most important to me. However, proofs classes and calculus do help, such as when making those game engines calculus is involved, (at least when it comes down to proper physics in the game itself). So if you want to advance your career beyond using game engines into creating them, it is a must.
Many other posters have said that you don't use math beyond basic arithmetic in programming—especially if you are working on "information systems" also known as CRUD applications and I agree with them.
This may be true, but the reason that I think we should still insist on math being a part of a comp. sci. curriculum isn't because you will use it in your day to day work but because learning it reorganizes your brain.
Leaning math has side benefits that generalize to computer science and programming: an ability to think abstractly, the ability to break problems down into logical units, frustration tolerance...
Once you have gotten through a 2nd year multivar calculus class successfully, you will have developed a lot of the mental habits that are essential to day to being successful in a programming career.
You should not waste your time with it. Otherwise, you might end up competing with me for the interesting jobs. Neither of us wants that. ;)
Being good at math often means you are a good, creative problem solver. Even though I very rarely need any specific knowledge from the math courses I've taken, I use the skills I developed solving and proving all kinds of math problems every single day. With computers and without - just make sure that whatever you study, you learn how to think.
If you have the ability to look at a problem and say "oh yeah, 3 variable calculus", you will be able to be more effective than the guy or gal who goes "I don't see how we can make much progress here, let's shelve this."
Granted, this differentiation (get it? get it?) only occurs in rare scenarios in real life. But I will submit that those 1% of scenarios might decide the difference between success and failure on the project that makes you a success or failure.
Much of life is about having that extra edge. Math is an edge that is worth the investment. Not everyone can swing it though, but I have no problem impressing on as many kids as possible as much math as they can stomach. Like eating your greens, it's good for you.
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
Don't do math. Talk to Frank.
Operation Guillotine is in effect.
In a digital world, classical calculus isn't used very often. To be honest, I forgot most of it. The big thing you should know how to do is integrate. Instead of an integral, you will typically use a Riemann sum in programming. However, Riemann sums are taught in most calculus classes, and you should be aware of how it works in comparison to an integral.
I'm not a software engineer, but I do a lot of programming for data analysis purposes. Yes, I think you should take calculus. Not because you will use it directly, but because of the more abstract concepts you will learn while taking the class.
One of our competitors trademarked the term "hypothesis". From now on, we will call them "boneheaded ideas".
How much CS is used in IT desktop / admin jobs?
Same idea people are put off by the 4 years pure class room when at a tech school you can get the needed skills in 2 years or less.
You can't use what you don't know.
Generally speaking you don't really know a math class until you've taken one or two more classes.
I've taken a lot of math and I routinely use up through pdes as well as probability and statistics. Linear and abstract algebra I use constantly. Topology is rare but I do use it periodically.
If you bother to really learn the stuff, math will be invaluable to you. If you don't bother to learn it, then you can still muddle through. You'll just have fewer tools in your tool box.
It depends what you want to do (not just what you discipline is, but exactly what you are doing. Do you want to develop a rendering engine? Yes, calculus, and probably linear algebra. Do you want to just use existing libraries to animate stuff? That requires considerably less)), and how good you want to be at it. I do some scientific software development, and almost every package I use involves calculus in some way. But icebike is right, I usually never see the calculus, or have to do actual differentiation or anything like that. However, if something goes wrong, I DO need to use my knowledge of calculus to understand exactly what is up.
Interpolation, functions, and linear algebra seem pretty usefule for anyone doing graphics, and are covered (Aside from the LA) in most calculus courses: again, not because you will be using them all the time, but because when something goes wrong it is often attributable to some error you made in understanding these principles. Think of it as being a pit mechanic versus working in a repair garage: usually a member of a pit crew doesn't have to rebuild a transmission, but they should at least know how it works and be able to tell where subtler problems are coming from, and usually they know much more than that. Programming is composed of tools: you don't need to know how they work to use them, but you really should.
That said, calculus is something everyone should really have some experience in. It's a freshman level course at most unviersities and isn't that much more difficult than algebra. And yes, most people won't be using calculus in the sense that they can take a homework problem and use it on the job, but again, education is not training, and you need both to succeed.
Depends on the Maths, depends on the CS.
"Logic", if it can even be considered a branch of Mathematics, is always important. The various topics under "Discrete Maths" often overlap with CS. The habits of rigorous thinking, proofs, use of counter-examples, etc. are all indispensable to proper programming.
That being said, my personal experience in web and systems programming is that as long as you don't go into game and graphics programming, you don't really need to apply any "mathematics" beyond high school level, if even that. The curious thing is even though you may not really consciously use mathematics, better programmers generally do have a pretty good grasp of higher mathematics....
But then, I've really never done any damn calculus in my programming career (not that it's particularly long). In fact, unless you're doing something very domain specific which needs the actual maths, usually an approximate solution will be simpler, easier to maintain, and less error prone. (It's not always easy to resist the temptation to implement the fancy solution though)
(PS: And I speak from personal experience -- as a programmer it's often helpful to have friends that actually know their maths very well :-p)
Don't quote me on this.
It depends on the field you end up in, really. Writing $randomSmallSocialWebApp requires only a moderate understanding of algebra, statistics, and numerical methods. (You can get by with less, but you won't be as good a programmer and won't float as high.) Writing $randomControlApp requires considerably more math, depending on the job.
In my job I write a lot of embedded software and use a lot of my math training. From control theory to simple things like calculating rise times and ring on a bus.
Will you directly use the Calculus in your day to day? Probably not. However, before you feel justified in rejecting further math education there are a few things to consider. First, limiting your education is limiting your future career options. What you as a youth believe you will want to do in your adult life is more than likely shortsighted if not plain wrong. The more choices you have--by way of an education--generally speaking the better off you will be. Second, while it isn't likely that you will directly use advanced mathematics in your day-to-day learning these maths is exercise and training for your brain. Much like learning a second (or third,...) language you expand your potential for creativity and problem solving. Techniques and ways of thinking used to tackle these advanced concepts ARE directly applicable. To phrase it another way, if the only tool in your toolbox is a hammer, then everything starts to look like a nail.
Even if software development isn't going to be your future career choice, but especially if it is, I would encourage you to push yourself as much as you possibly can to learn as much math as you have opportunity to learn. In the same vein I'd also recommend learning a second language, particularly one that does not resemble your first language. Will it be hard? Will it be a pain in the ***? Of course. However, at the end of the day, you will be stronger, far more capable, and justifiably confident than your slacker peers providing you with a distinct advantage in a highly competitive job market.
Two of my imaginary friends reproduced once
I am working in the academia doing High Performance Computing, Scheduling, Multi-Pbjective Optimization, Approximation Algorithms and Graph Analytics. I am using mathematics all the time.
Some part of it is actually straitght up mathematics: find a parameter set that optimize function f(x). Some part of it is linear algebra (dense, or sparse). A lot of it is combinatorial optimization: (e.g. counting or estimating the number of objets that have a given property). A significant part of is probability and statistics to perform result analysis.
Though most of it is not mathematics as OP probably means provided he is in high school. Most of the time you do not compute things yourself. You plug it in a mathematical software that does it for you. Thought some times the operations you need are not available and I need to write them. But the importance of knowing mathematics is to be able to pick the right tool, understand what it says, and, most importantly, understand what it DOES NOT say.
The training you get in mathematics is CRUCIAL to any kind of system analysis activity. Not necessarily because you will have a lot of equations to deal with, but because it trains the mind to see what is right and what is wrong. "Implication is not equivalence", "correlation is not causation", "monotonicity is not linearity", "random is not uniform" are the most classical example of simple mathematic mistakes people do all the time when they lack proper mathematical training. In CS or IT, such mistakes can cause a lot of pain...
For building cool, advanced stuff, and being an elite coder generally (e.g. sophisticated apps, or competitive coding), you certainly need a level of mathematical maturity.
I certainly had to pick up a little for graphics; a mate took some machine learning classes in college without a mathematical background and it melted his brain.
Likewise, the world-class coders who win international programming contests have heavy maths backgrounds and can bring it to bear on problems real fast. The real ninja competitive programmers I've met all seem to have dual maths/computer science degrees.
For well-paying jobs in the finance domain, good maths is VERY useful.
Certainly, for everyday development, you don't need maths. But for anything particularly intense, e.g. graphics, machine learning, anything that used to be called "AI", you certainly need it.
If you want to get educated in college, you cannot avoid math.
If you want to be an engineer, you cannot avoid math.
If you want to be an electronics engineer,
you will become a proficient mathematician for certain...
I recommend electronics if you like mathematics.
I recommend lumber grading over programming.
If you want a good job with the math skills you mentioned,
become a machinist.
This makes me wonder: will I actually use calculus and above
Probably not unless you are in some fairly specific areas of engineering or academia. I've almost never used calculus in my professional life though I've used software that does lots of it for me. I have however used the crap out of statistics. For most people they are much more likely to utilize statistics in their jobs and day to day life. Frankly I think it is terribly under emphasized in most curriculums.
or is it just a popular idea that you need to be a mathematician in order to program? What are your experiences?"
It's important to understand it even if you don't actually use it. You can't really understand a lot of things unless you have at least a basic appreciation of calculus. I'm glad I learned it even though I don't actually use it much.
I wanted to build a better shake detection routine for an iOS app and dug into my background of digital filter theory in order to craft (and then implement) some specific band pass and high pass filters based on a set of defined frequency characteristics, as well as understanding the RMS (not that RMS) calculation of a continuous waveform in order to trigger set events. All so that when the user shakes my app pretty things will happen.
I am Slashdot. Are you Slashdot as well?
You won't command much credibility if you can't even spell "orthogonal" right.
The thing about math is that it teaches you to think logically, analytically, and rationally. It is also completely objective. Either you got the right answer or you did no get the right answer. Unlike writing an essay which results in a grade that is influenced by things other than student skill (such as teacher skill, relationship with teacher, etc), you can either do the math or you can't.
Being able to think through and solve complex math problems gives you the skills to think through and solve other complex problems.
Furthermore, by understanding things like feedback and control loops (which require math to fully comprehend), you can have a better idea of how the world works in general. You will better be able to understand the effects of exponential growth constrained by finite supply because the math involved makes sense to you. You will have the numerical analysis skills to understand why socialism doesn't work (feedback loop plus running out of rich people long before you run out of poor people).
Sure, some people may argue that math is not necessary. I counter-argue that it is more necessary than ever and that it can be taught to anyone provided you break the learning steps up into small enough chunks.
http://opinionator.blogs.nytimes.com/2011/04/18/a-better-way-to-teach-math/
http://www.huffingtonpost.com/judy-boltonfasman/math_b_1751060.html
http://www.huffingtonpost.com/david-h-bailey/algebra-is-essential-in-a_b_1724338.html
Speaking from experience: if you're interested in a computer science career, a good mastery of maths is absolutely necessary and definitely not optional. You can't do without in this field. Period. As a software (games?) developer, you may or may not need deep skills in math, depending on whether you want to be creative with new algorithms, or whether you want to be the kind of coding monkey that does some plumbing of pre-canned components and libraries without giving much thought on the underlying concepts and algorithms.
cpghost at Cordula's Web.
One math course particulaly comes back to me again and again when I am programming. It was called "Numerical Analysis" when I took it but might be called something different elsewhere/now. It involved analysing the errors inherent in computer arithmetic and calculations. Especially floating point inaccuracies and aproximations. Whenever people tell you to not use floating point it is usually because they don't understand this subject and don't know the techniques to work with it and avoid the problems.
I do most of the design and programming on A Tale in the Desert and Dragon's Tale and I've seldom/never needed to do an integral or solve a system of differential equations. Understanding those concepts does frequently influence game design, however, so having taken those courses was important, at least for the kind of games I do. (Giving specific examples would require that you are familiar with gameplay for each of those games, but feel free to contact me directly if examples would be helpful.)
:)
But on to specific branches of math: You'll certainly use linear algebra doing 3D programming, and IIRC that's considered "beyond" calculus. (If you're using OGRE or Unity 3D, at least at the API level then I'm surprised you haven't run into this.) Applied Math, which is often a college freshman course for a CS decree is crucial to all sorts of programming, especially games. Combinatorics is critical for game design, though if you're just planning to be a programmer, not so much. Numerical Methods will teach you exactly when and why rounding errors to happen, how they can compound each other, and in general help you write squeeky-clean math code. The game I'm working on now is a gambling MMORPG - I probably don't even have to say how important statistics is, if this sort of thing is in your future
Notice how different each of the math subjects above is? A lot of this comes down to learning how to learn, and that's the one thing that in my experience differentiated high school academics from college.
There are a lot of fields for which calculus won't make much of a difference. Even in some scientific and technical fields, you may only use it occasionally. On the other hand, I've never used my American Literature, Philosophy, Psychology, Western Civilization, Spanish, and a variety of other general education requirements in my professional life.
Yet, I don't regret having taken any of those classes. Personally, I view education as a development of the individual into a well-rounded and knowledgeable person. An education should result in a "well-educated person." Education should not be job training. To be educated in language requires a familiarity and an ability to understand and analyze literary pieces. To be educated in culture requires a knowledge of one's cultural history, the nature of various events, the way they interact, and it requires the ability to think through those events, define them, and discuss their significance in the development of the world. To be educated in science requires a familiarity about the nature of life, the building blocks of living and nonliving material, and the laws that govern the way those building blocks act. A truly educated person will understand science not just as its own entity but as a way of understanding life and nature and how the fundamental and material nature of things impacts our culture. To be educated in mathematics requires not just a familiarity with numbers and the basic relationships between them but also with the meaning of mathematical principles in every area of life. While it's most intimately connected to physics, math is fundamental to every branch of science. But math (particularly when expressed as symbolic logic) also governs language, art, and culture.
So, ultimately the question is, do you just want to learn the things you'll need in your job, or do you want to be an educated person? You'll probably discover uses for calculus in a computer-science field. Certainly calculus will give you tricks that simplify a number of problems you may face. On the other hand, if you want to learn for the sake of learning, then calculus is essential.
Linear Algebra and Discrete Math are probably the most relevant, depending on your field. (Number, ring theory are also useful, sometimes.) That said, there is something to be said about the way mathematics can bring structure and rigor to a person's thought process. After raising 2 teens I'm convinced that the 2 most important things to helping someone learn how to think are math and expository essay writing; after that the rest is just data.
This is spot on. Also if you want to be a shader guru, not knowing higher math will prevent that. Games are probably rare in the software world in that math is actually used a lot.
With a background in Engineering and currently a Biologist I would say that calculus and differential equations are absolutely necessary. Things (objects, fluids, heat, proteins, etc.) move over time. There is no way to describe or model these things without calculus.
It depends on what you're trying to do. Not knowing what you're doing can be hurtful, for example, not knowing very basic algebra means you can't do simple things. Recently I noticed my colleague couldn't determine the row and column for given an index. Quite trivial stuff.
Fairly recently I've implemented a 3d cone curl for iBooks style page flipping and countless interpolation functions where an API doesn't give enough control. Being able to work with a continuous principle and derive a discrete function is very important in animation.
I guess it comes down to 3 things: how well you understand the subject, how well you can program and whether you can apply relevant maths in a way that won't obscure your code or make it more difficult to maintain. I don't want to tweak random values, and if you don't understand these random values and start exposing them, you're going to make spaggetti code.
Understand your chosen coordinate system and swap when you need to! Take an arrow with a head - you can place a static arrow head at the end of a line or you can derive the arrow head's position and and shape as a function of the line - the latter looks really nice if you understand the coordinate system. If you don't, you'll end up making a horrible mess.
But alas, your mileage may vary - if someone hadn't done the hard work for me, I wouldn't be able to implement many of the things I'm asked to as I'm merely an engineer (and yes, I have a few of those mid-level textbooks with titles like 'Maths for Engineers' or 'Somethingtotallypointlessbutitsyourjob Theory For Engineers'). Once you've solved a couple of matrices most of what you'll do in Unity is state orientated, so with the help of a good model you don't need to think, ie: in some model context, model->modelToWorldMatrix will transform model coords into wordspace, use modelToWorldMatrix.
Hope this helps!
I use lots of math. Mostly trigonometry and geometry (software deals with mapping and displaying positions), probability (for the AI stuff), linear algebra (for drawing, calculating intersections, etc), discrete math (for dealing with data structures and database query optimization), and formal logic (for figuring out computer languages).
I have very occasionally used calculus, but mostly to prove optimality of algorithms and sometimes for physics stuff, but mostly as a software engineer, someone else already did the calculus, and you just need to be able to use the results. I cross the line a bit between research and application, so I do a little of both.
But the overwhelming majority of software people (even in my R&D organization) don't use math at all, beyond basic arithmetic and simple logic. Most software is just data storage and retrieval with a pretty interface. The libraries, languages, and operating systems do all the heavy lifting for you. But I would seriously hate my life if all I did was glue together parts built by other people, and had to tell myself that my area of expertise was "business logic", so understanding how the underlying stuff works is unimportant. I build those underlying parts, and that's why I need and know math.
We use statistics and linear algebra on a daily basis in manufacturing. Don't limit yourself by not knowing how to apply mathematics.
However, no one has ever come up to me and asked me to solve for the first derivative. They want to know what are the optimal dimensions of a box or something like that.
I work in the defense industry, writing software for both fielded systems and the modeling and simulation used to define and design such systems. I constantly use algebra, trigonometry, FFTs, logarithms, complex mathematics, statistics, probability, and a bit of calculus underlying many of the models. I do a fair amount of data analysis, which has me thinking about the various ways to condense and display data. My coworkers who can't understand the math are relegated to building UIs and writing messaging interfaces. Those of us who can understand the math create all the underlying code doing the real work. The former are much more likely to be viewed as replaceable and laid off in the bad times.
Linear Algebra and Discrete Math are probably the most relevant, depending on your field. (Number, ring theory are also useful, sometimes.) I've never used Calculus in my job; but there are probably folks who do, it's just rare.
That said, there is something to be said about the way mathematics can bring structure and rigor to a person's thought process. After raising 2 teens I'm convinced that the 2 most important things to helping someone learn how to think are math and expository essay writing; after that the rest is just data.
what about other NON college education.
http://articles.chicagotribune.com/2012-03-11/news/ct-oped-0311-page-20120311_1_college-costs-rise-kayla-heard-college-attendance
"Yet, give Santorum his due. He touched on a reality that deserves more public discussion: College isn't for everyone. Some very bright students thrive better while learning a hands-on trade, for example, than they do in a classroom. Others simply can't afford the time or tuition of college because of their personal circumstances."
College is not for all and there others ways to learn then going to a big 4 year plan. College needs to be cut down / cut up into small chunks that can better fit fasting moving tech and can work for people who are working and want to gain more skills but can't fit into the college time table.
http://articles.chicagotribune.com/2012-03-25/news/ct-oped-0325-page-20120325_1_collegiate-learning-assessment-college-students-richard-arum
"I recently wrote about the possibility of testing and certification for what I called a "college-level GED." Like the current GED test for high school equivalency, it would award certification to bright, hardworking job applicants who want to show potential employers how much they know, even though they never graduated from college/"
community colleges and trade schools are not the party schools that some colleges are.
"Ohio University's Richard Vedder, my former economics professor who gave me the collegiate GED test idea, is even more blunt in his assessment of today's academia: "Universities are becoming more like country clubs," he said, with climbing walls, indoor tracks and other luxuries that give students "something else to do with their free time besides drink and have sex."
Experiment design and analysis uses math. Systems monitoring uses quite a bit of math (or pages you for false alarms at 2am). Scheduling uses math. Stress test analysis uses math.
For game programming, physics uses LOTS of math, and since that math is expensive to perform, you often end up needing to do even more of it to come up with alternatives that feel 'right' while being better adapted to your physics processor. Then there is analysis of what your players are doing, AI (and learning!).
Realities just a bunch of bits.
Calc is also lovely for understanding financial/economic graphs. I look at price curves all the time when shopping for quantitative things, like picking what size hard drive to buy.
I don't know if it is directly applicable to the job, but in the world of software engineering, I generally find it easier to work with people who have made it through all the required math than the ones who didn't. Even if that's not a causation, it's still a filter, which can be useful.
I didn't use math much past counter++; until I learned some hard core math. Then I had a new hammer and the math in my code grew to the point where I now need GPUs to keep up. I love OpenCL.Discrete math rocks. I look back at my old pathetic basic algebra self and shudder.
Often it is useful for either figuring out what is going to happen when some set of algorithms get pounded (instead of just coding up a script to bash them) or in cool analysis of data that otherwise just sat silently in some log file.
My experience is that advanced mathematics is not needed every day but it is needed sometimes. In my career I've worked in the chemical industry, biomedical engineering and telecom; all as a software engineer. In each I have used calculus at some time. Sometimes it just added insight and others it was absolutely required to do the job. Understanding advanced math certainly doesn't hurt and often helps your career by making you more versatile to your employer.
Computer programs are mathematical expressions, so I am using math virtually all the time at my programming job.
I have never solved a differential equation for my work, or even while programming for fun, but techniques I learned while taking Calc I-IV I no doubt use in my work without even thinking about it. Practice solving difficult math problems both stimulates and creates the areas of the brain you use when programming.
Discrete math and digitial logic design? Yes, I use what I learned there sporadically. The most important part of discrete math for most programmers is understanding computational cost. You don't need to take a discrete math course to learn Big O notation, but it might put it in better context with other ideas. I don't do hardware, but digital logic design was my course in logic. In order to read someone else's code and fix his stupid mistakes, you have to understand his flawed logic and fix it.
Signals and Systems and Probability and Random Processes? I got a terrible grade in the first class, but when what the professor was trying to teach finally began to sink in 10 years later signal processing became a lot clearer. Much software can be thought of as a signal processor. You have an input, you process it, and you have an output. Basic probability is also quite handy when programming. Pretty much the only thing I think about is a normal distribution. The ideal piece of software is correct in all cases, but you always have to consider the probability of situations when making cost trade offs or pitching an argument with management about the importance of something you want to work on.
Hmm, the slope of my benefits with time is negative, and the slope of the slope is negative. Time to get that new job.
Mod me true.
If you just want to make a living, then you'll probably never need any higher math.
OTOH, if you are at all serious about programming as something you want to be really good at, then you need a _lot_ more.
I've worked with low-level game code (Quake asm), with video & audio codecs (MPEG2, h.264, ogg vorbis), with crypto (one of the AES candidates) and I wrote most of the code for the compiler sw workaround for the Pentium FDIV bug.
I doubled the speed of a Computational Fluid Chemistry code base, so that simulations ran in half a week instead of 7 days.
I've also won a couple of international code optimization contests.
The key here is that except for the h.264 optimization all of this has been pro bono, my daily job at a Norwegian IT company has almost never _required_ me to know a lot of math, but having math as a hobby means that I tend to spot all the bogus calculations in Powerpoint presentations. :-)
Terje
"almost all programming can be viewed as an exercise in caching"
There are some courses of study that require that you take certain subjects to weed out those likely to fail. One requirement in college is Freshman Composition (Frosh Comp).
Assuming you are studying to be a computer programmer or a physician, you may never need to write a composition like what is required in Frosh Comp. nonetheless, this test for mental organization is a good requirement. If you cannot order your thinking, you ought not be holding a scalpel over a live body.
My floor and the floor below are filled with statisticians and genetics researchers.
Now go back to making crayon drawings like a good boy and stop bothering the female-dominated hard working biostatistical and medical research fields that solve your problems ..
-- Tigger warning: This post may contain tiggers! --
I went to a specialized and rather rigorous science/tech college for undergrad, in which I took introductory classes in linear algebra, multivariable calculus and differential equations. It's rather depressing that I haven't really used a single bit of any of it since graduating (or even, for the most part, in any of my post-everyone-takes-these classes), but indeed, I haven't. But I imagine if I were doing anything particularly engineering-like, or anything having to deal directly with any sort of physics (which would include game development, as well as many sorts of graphics or audio manipulation), I would.
I haven't even had to use anything from the second half of my high school algebra class. Though, programming is all -about- everything from the -first- half of high school algebra... (i.e. arithmetic done on variables. ;))
I've had to use some basic geometry/trig all of once in the past 5 years of coding, and that was on an image manipulation question.
So the title says a lot. I've used only a small bit of the whole field of mathematics over the years. Quaternions, trig and some linear algebra are most of what it comes down to. I think I may have used a derivative ONCE. Stats can come into play, depending on what you're doing.
But I'm going to recommend something to you: take a bunch of math, and dive into a scientific field of endeavor that leverages that math. Most of the natural sciences require a good understanding of statistics. Physics obviously requires a lot of interesting math. Even if you decide to really study computing science itself, you'll need an enormous amount of abstract math knowledge; computing is little more than applied mathematics.
I've got a minor in Earth sciences (meteorology, geology, etc.), and it's rapidly becoming obvious to me that the most interesting problems for a programmer to work on are in the scientific fields, not in the 'industry'. Climate modelling, economic models, terrain simulation, CERN and the LHC...those are places where math is completely requisite, and they're the fields that are either shaping the world or are significantly being shaped by the changing situations in the wold.
Making games is interesting work, and I've enjoyed my time in this industry, but I'll probably make my way out in a few years to do more school in a physical science field. If you really want to have an interesting programming career--truly interesting and perhaps even world-shaping--you NEED math.
Mathematics is very important in IT.
It is not that you directly haveto use it. Especially discrete mathematics is very important.
With these mathematics you learn a way of thinking that will be very usefull in your career, assuming you do not want to be just the average joe. Being able to understand it shows also a lot about your competance in the field. You won need it to install software or put computers together but when it comes to designing and developping software it makes a big difference.
I have found that you only use math if you want to... meaning if you don't want to use math you will almost always work on things that don't require it because you avoid math or you'll put some hack job together that is good enough without a thorough math review. However if will learn to enjoy solving math problems of any variety you will find opportunities to apply your skills and your job opportunities will expand. In the past I avoided calculus and got by just fine, but one time a problem that required calculus really intrigued me so I decided to really dive into it and refresh my calculus skills. I am really glad I did too because it's taken me down a different job path that I really enjoy.
Students who do well in the more advanced undergraduate math courses (real analysis, abstract algebra, etc.) may never specifically use those precise topics, but good performance in those courses serves as a strong testament about being able to deal with abstraction, work precisely, and construct correct arguments. Those skills will serve students well and may impress employers/managers that the student actually is pretty good at thinking and problem-solving.
Linear algebra as mentioned above is probably more likely to be specifically useful in applications: modeling, graphics, science and engineering settings, as typically relationships are too complicated to be understood effectively by anything besides a linear approximation. But many linear algebra courses are technique-based and rather cookbook, missing an opportunity to take advantage of good more abstract approaches.
It's psychosomatic. You need a lobotomy. I'll get a saw.
I have an MSCS from Stanford, but it's from 1985, when the logicians and expert systems guys were running things. So I have lots of number theory, combinatorics, automata theory, and mathematical logic. I even took "Epistemological Problems in Artificial Intelligence" from John McCarthy.
So what did I end up needing? Tensor calculus. I realized that expert systems AI was stuck. The future of AI capable of dealing with the real world seemed to be in nonlinear control theory. Which is all calculus and statistics. I struggled with that, and got legged running over rough terrain figured out and patented. But this was 1994, and the simulators sucked, and I couldn't get any further without better simulators. So I spent a few years beating on that problem, and produced the first simulator that could do a ragdoll falling downstairs.
By 1997, I had that solved, but it was kind of slow. A 200MHz Pentium Pro just wasn't enough engine to get it up to real time, and that was the top of the line in CPUs back then. By then I was burnt out on the problem, and it wasn't making much money, so I sold the technology off to Havok and went on to other things.
I didn't see that what was needed was to couple nonlinear control theory to Bayesian statistics. That's what makes all those quadrotors zip around so precisely. Modern statistics barely existed when I was in school. Now it drives everything from finance to speech recognition to advertising, so it gets worked on and people study it. Nonlinear control alone never had that big a market, so the field didn't get enough attention to move it forward.
So I needed more math, and different math, than I got in school.
Pretty much every day, but I write digital signal processing programs in C/C++.
Although in 12 years of programming I don't use math beyond geometry, trig, algebra I, and discrete mathematics -- taking 2 semesters of calculus expanded my consciousness. You see how numbers relate to one another in a whole new way. Learning about the kinds of problems the higher maths are meant to solve is also fascinating.
"Love heals scars love left." -- Henry Rollins
Go and get the latest Siggraph proceedings. You'll soon see that all sorts of math are useful if you want to do cutting edge graphics.
I thought I'd add this little information piece. In this John Carmack interview the very first question asked is how much and what kind of mathematics is involved in game engines.
The fact that this question is being raised...is...disturbing. I'm talking early Bobcat Goldthwait, maniacal screaming, dark-acerbic comedy disturbing.
Math is about much more than "solution." Math is also about how one arrives at solution. Math is about how one communicates the most fundimental ideas. Math is about proof, certainty, and understanding (individually and communally).
Certain themes occur in our daily lives; themes that today, we "know" and "understand" (with certainty) because they are reduced to a mathematics. If there is no mathematics, one is left with faith-based, opinion -- hypothesis...speculation.
One builds upon a foundation. If one's foundation is toolsets -- created by others -- then one's capability will forever be limited by said toolsets. However, if one's foundation is the underlying reasoning of toolsets, then one can transcend the toolsets and achieve excellence far beyond the imagineering of others. It was gaming, game theory, relativistic models, fluid flows, collision dynamics, vector mechanics... that grabbed me by my entrails and kicked my youthful ignorance, arrogance, and laziness into a new dimension of sympathy and love for the elegance (and necessity) of higher-order mathematics.
The fact that the argument is evidenced by "Ogre" and "Unity3D" evokes an almost sympathetic, puppy-like pat on the head. Ugh... I see these kinds all the time at conventions. All gooey-eyed and heads filled with mush! I see their resumes and portfolios... and they go directly into the trash. I get their babbling phone messages and I route them to the bit bucket.
Answer: If one is content with limitation; chained to the capability of others, unable to even communicate intelligently with pioneers in one's field... no, math is not important. But...trancendent excellence is forever denied to the willfully ignorant.
I use statistics a lot. There's a lot of number crunching in programming, and data sets are getting bigger and bigger. Understanding statistics helps you understand trends, when they are significant and when they aren't, etc. I actually wish I understood stats better and should do some more reading on it.
I must be a bit of a nerd, because I find calculus useful just in everyday life, let alone for my job. Understanding the difference between a change and a rate of change is something that most of us can intuitively grasp if we think hard enough about it, but being able to apply the language of calculus to that event helps me better understand and communicate it. Again, when applied to working with datasets, calculus becomes very important.
Mathematics is a language that is used to describe reality. The better you understand mathematics, the better you can understand the world around you, and the better you can articulate that understanding, both to yourself and to others.
www.clarke.ca
Ignore the computer scientists. They tend not to be the best programmers anyway.
Learn how to program. Learn software engineering. Learn how to deliver working software quickly, that meets the needs of its users. Learn how to re-use the work of others, in particular those nice computer scientists that did the research, wrote the standard libraries and included them in the basic language spec.
It doesn't hurt to be good at maths, to be able to understand it, but it sure as hell isn't important to have a degree level understanding for most programming jobs. It certainly isn't as important as strong people skills. Linus isn't a living god because he's the best mathematician in the Northern Hemisphere, it's because he's able to coordinate and manage a large, diverse and intelligent team and get them working together.
disclaimer: I didn't do computer science at university, it was too easy. I did financial analysis, where the computing element was merely automation of the complex analytics and mathematical models being used.
Yes,
Depending on the field and where you your going you really should have it. CS covers a broad area, like many tech companies hiring an "computer guy" require a CS degree in the qualifications. The reality and they know it, that's not what they need, software companies love to say you have to have a CS degree but then you find out they are developing with perl. Really CS for a perl scripty job? Having the math base puts you at the bottom of the technology tower, that foundation where everything is put ontop of it.
A pure example, while not 100% relative, ask your "IT guy" (admittedly many not all companies consider IT your desktop support) how a CPU truely works. While they are a smart man or woman and solve many problems they very often have no idea the foundation of how things a layer bellow works. But the stronger your base is the further down that tower you go, and the farther down it you are in the future you can easily move to any place above it.
Let me guess, you never liked math and never were any good at it?
I first read the headline as "How many of you actually use METH"?
My view is that even though you might not need these skills, the very act of attempting to learn them alters the way your brain is capable of solving problems in a way that is indispensable.
First day, first job, a million years ago, before finishing my bachelors degree, I was programming a distribution optimization routine and needed to figure out great-circle distance between two cities based on their longitude and latitude, in order to estimate shipping costs. Used stuff I had learned in vector calculus.
Fast forward, just finished a PhD in math, use stats/probability/etc every day, all day in my networking job.
Having been a game developer, what level of game developer do you want to be? Will you always use predefined engines? When I was working as a game developer, we were working on early dev kits (really, glorified prototypes) for the PS3 and XBOX 360. Defined engines didn't exist (especially on the PS3). Doing anything interesting graphically required an extensive knowledge of Linear Allegra (which most colleges require Calculus to enter).
Discrete Math is a definite requirement to understanding how machines work at their base levels. As for Calculus itself (aside from being a pre-req for Discrete and Linear Algebra), unless you are always going to use predefined physics algorithms, you need to understand calculus to create new physics algorithms yourself.
So, how much math you need depends on what kind of developer you're planning on being.
Half my company are programmers with math or statistics backgrounds.
Its a must.
Obviously not all math is needed but you will never know what you need in high school so its good to learn it all.
Also, math is self-supporting. If you learn a little Calc, you will know more about Stats.
I thought the original article was a troll. Math is hard, and causes kids who are otherwise good students to drop/fail out, therefor math requirements should be lowered.
You could also say memorizing names and dates is hard, and causes kids who are otherwise good students to drop/fail out, therefor history requirements should be lowered.
Grammar and spelling are hard (and unnecessary anyway since MS Word will do it for me!), and causes kids who are otherwise good students to drop/fail out, therefor language requirements should be lowered.
Basically, the originally argument is "no one is great at everything, so therefor nothing should be required and grade school should have no minimum standards." It is a position I completely reject.
The very premise is bunk--math is not that hard. If you are dropping out or failing to graduate high school in the USA because of math, then you aren't that smart and weren't a good student to begin with. As a math/science geek, this was never an issue for me. But I can relate, because my language ability lagged behind my peers, particularly when it came to learning a second language. I know what it is struggle in one particular area.
So is that why I dropped out of school? Actually, no. I somehow managed to pass two years of Italian in high school (not required for graduation, but I felt I had no choice as a second language is expected on college applications.) Oh, and I also passed a year of Russian and a year of German in college. Some of the toughest courses I took. It was more of an effort for me to do two semesters of Russian over a summer than all the extra math courses I took in my spare time that eventually added up to a second major.
So F you, boo hoo, math is hard. Yeah, if you're stupid and lazy.
But that's not what I'm hear to say.
What I want to say is, it's not just math, but which math. Our USA system is geared towards getting every one to calculus. Calculus is fun and all (no really, it's fun!), but not a relevant goal for everyone. I think this particularly applies to computer scientists and programmers.
Most folks would be better off on discrete maths, such as abstract algebra, linear algebra, group theory, probably, etc. (Probability can include calculus (particularly when infinite series get involved) but there's a lot you can do with just high school algebra.)
So to the OP here, I'd say, yes, math will do you good, it just might not be calculus.
To the folks who can't even get over high school algebra, well, yes, I would like fries with that.
I am far from an expert on this subject, but it's shocking how easy it is to tell who has or hasn't made a study of math. Usually at any rate.
Those that study math and really took the time to comprehend what they were looking at seem to be much more capable of the more abstract problem solving.
Mod me down with all of your hatred and your journey towards the dark side will be complete!
Well, I'm a physician. So while I don't deal with differential equations on a daily basis, I certainly needed a lot of math just to understand things like pKa and reaction rates in biochemistry, things like stroke-volume and the Starling equation, to understand how a kidney works, to understand why a 4cm aortic aneurysm is not such a big deal and a 6cm one can be deadly (something about a 4th power in there), acid base imbalances, why in the trauma room I need to use the short catheter and not the long one, etc. I needed math just to understand all of those concepts. In my day to day work, well, I don't need THAT much math - mostly fairly simple arithmetic. Dose is 50mg/kg divided in twice daily, patient weighs 7 kg, so I need to give him 350mg a day which is 175mg twice a day... Not rocket science. You need to look at an arterial blood gas printout, glance at the pH, HCO3 pO2 and pCO2 and instantly decide if you're looking at metabolic or respiratory acid/alkalosis. There's math there but after a while it's not work - they are all numbers you have seen before. And then there's the math that has to do with billing, and figuring out if you're actually earning or losing money which is not as easy as it sounds. Then there's the math that you have to deal with from your banker, who wants to bill you $700 a month for that new equipment you just bought. Should you buy the other model and save $50 a month, or not?
Then I go home. I have a mortgage. More math. Should I refinance, or stay as I am? How about retirement? How much money will I need to maintain my lifestyle, and how can I make sure I have it?
Oh there's plenty of math in life. Not everything is a Taylor series, or trig, but think of it like running. You have to learn to sit, then to crawl, then to walk, and then to run. Most of your life will be spent sitting, some of it walking. Rarely will you run. But still it's good to know you can, and that you can do it when you have to. Math is the same way. If you're a fool you'll kid yourself into thinking that math isn't important. That's the same as going through life with your eyes shut. Things will happen to you and you'll get into trouble, because the ones who are good at math will rob you blind. Or you can open your eyes, and spot where the reasonable deals are and where the rip-offs are.
Seven puppies were harmed during the making of this post.
well... i'm designing an engine, at the moment: http://lkcl.net/engine for this project http://facebook.com/UltraEfficientVehicles. the actual complexity of the maths required to do a proper job is waay beyond my abilities, so i am using iterative programming with python, as a temporary substitute.
to give you an example of the kinds of things i need to do: the design is a cross between a revetec and a bourke. if you've not heard of either of those: the revetec uses counter-rotating multi-lobate cams instead of a crank (2 tri-lobe cams shared across 6 cylinders), and the bourke used a scotch yoke to get a perfect sine wave. both designs have extended dwell time at TDC.
so basically, the "bang" is longer, hotter and quicker than a standard crank. what that means is that the exhaust gases are *not* burning as the piston goes away from TDC. and, with the cams, it's possible to arrange them so that as the piston falls away, the pressure against the cam face is turned into a *continuous* torque. so then, the advantage of the cams therefore is not just that you can get a torque pressure for over 120 degrees (as opposed to only 40 for a crank), but that you can do *anything* - including tricks like the above.
so the equation that i need to solve is that the rate of change of the face of the cam, acting as a lever to produce torque, where the lever is itself shrinking in length (because the cam face is dropping towards the centre of the spinning cam), equalises the torque as the amount of pressure falls off due to the expansion of the hot gases. luckily - and i say luckily - because "detonation" is being used (above 1800F you get the hydrogen burning as well as the carbon, so it's all over in under a microsecond) there's no burning gases so it's not as complex as it could be.
as i simply haven't got the level of maths to express the equation properly, nor do i know what sort of pressures will actually be involved in a 70cc cylinder, nor do i yet know exactly what compression ratio it's going to run at (i've made some adjustments to the cylinder's stroke), i am having to do the best i can.
so to calculate a first version of the cam, i ended up using a spline curve to roughly match a sine wave and then altered it slightly. even here, however, my first attempt to calculate the cam face was an O(N-cubed) algorithm, and i had to look up "line through circle" which is y=mx+c into y-squared + x-squared = r-squared and use that to reduce it to a more accurate O(N-squared) algorithm.
bottom line is: hell yes you lucky bastard if you've got an opportunity to learn some more maths for god's sake do so. you're damn lucky: you could probably solve the equations needed to sort this stuff out in a couple of hours, whereas it's taken me two weeks of thought and experimentation to get as far as i have, not having access to the right level of expertise.
btw, to the guy who said "instead of calculus, use linear algebra" - you're dead wrong. the iterative loops i'm using are a very poor substitute. when i zoomed in on the critical sections of the results (the DXF output) of what i'd produced, i found that they were wrong. i had to increase the number of steps around the 360 degree circle to 1,440 and the inner loop steps to 14,400 in order to get a level of accuracy that looked acceptable, and i don't actually know if it's going to be good enough.
if instead i had the right maths, i could have used it to calculate the tangent of the roller-bearing as it drops against the face of the cam, and worked out properly, with an O(N) loop, what the cam face should be. the O(N-squared) loop is because i have to "simulate" a CNC milling tool the exact radius of the bearing going round, "shaving" the cam face away, taking a minimum distance (hence the line meeting the circle) as the bearing rotates through 360 degrees (inner loop, 14400 steps) as the cam rotates through 360 degrees (outer loop, 1440 steps). this iterative technique is *not* as accurate as using calculus.
You say you've used trigonometry. if so, then you're already "advanced" beyond the level that Hacker was talking about in his article where he said that Math Is Too Hard For Our High School Students. He was advocating dumbing things down past algebra and trigonometry.
Now, mind you, I think of even trigonometry as high school math myself. But if you use it and know how to use it, you're already in the top half of the distribution of students in college.
Will you ever *need* Calculus in computer programming? Probably night. I might recommend taking a class in linear algebra if you're interested in computer graphics, because some of that applies. You may not use it, but the underlying engines rely on it. And, yeah, the underlying engines rely on numerical approximations to calculus for things like physics engines. Linear Algebra doesn't require calculus as a prerequisite.
However, Calculus is interesting and stimulating, and will stretch your mind to think in new ways. If all you're interested in is training for the job you want to do, then, no, you don't need it, but truthfully, except to match resume requirements to get through the door, you don't need most of college. If, on the other hand, you want to be broadly educated about the world and human intellectual achievements, then calculus is a good thing. Not necessary, but well worth the time.
Probably said already, but its not math per se that you should know, rather a general understand of solving problems in a rigorous proof like way. Thats half of programming, making something that works all the time every time. The second half is being able to communicate what you've done to others. In this way, math is a wonderful example of both qualities, if not maybe being a bit too pedantic. But think about it, rigorous proof means that the building blocks you used and proved before will always work regardless of where they are used, so take your arithmetic, its always going to work. From their math branches out to many other more complex fields, but the basis of each is proven. So if one field takes a useful concept from another, it too will work, because its built on the same arithmetic and logic as their field. This is where communication can get a little hairy, but for the most part, as is evidence by the continued march of mathematical progress, is fairly well defined. Operators, and function are generally agreed upon, and for older concepts, have been for hundreds of years.
Another thing you should not pigeon hole yourself in, is game development. You may like playing games, and as you are working your way through programming, making games may be fairly entertaining, but as toolkits and 3d graphics become more of the digital artists territories, game designers are getting more and more relegated to the debug, build, test, and if your lucking using a level editor. Video games I'm sad to say are become less the realm of programmers and more the realm of entertainers and producers.
I work as a graphics and animation programmer in the games industry, and I found that in university the required math courses focus mostly on calculus, (for my cs degree I had 3 required calculus courses, 1 required linear algebra course and 1 required logic course), which maybe isn't the best focus for many people.
Calculus still does come in handy in quite a few games related places like lighting equations and physics simulation, however, for the most part other areas of math apply much more directly to my every day work. Which is to say, math is used in my every day work, but maybe not the parts that are most frequently taught.
Understanding geometry and linear algebra techniques used for modifying, blending, and interpreting spatial information (transforms, positions, directions) is a requirement for any game programmer, but little of it is taught in basic university math courses.
Even in my first linear algebra course (which I looked forward to because I was trying to learn matrix math on my own), most of the time was spent on solving systems of linear equations, least squares etc, with very little time spent on geometric transformation... and I don't think any course I ever took covered quaternions at all, which is the most difficult to grasp, and useful math construct for storing 3d orientation.
Anyway, yes of course you need to learn math! Learn whatever math they will teach you, it will help make it easier when you have to learn the really useful stuff yourself.
If you're already at the "well, will I actually USE this sometime" phase, you should get GET THE FUCK OUT of programming immediately. The last thing anybody needs is another lazy-ass hey-I-got-my-MCSE-so-now-I-don't-need-to-learn-anymore jerkoff in this business.
If you're an engineer of any kind (including software), then guess what? You need math. Maybe a lot, or maybe a little (and it depends what you mean by "math"), but chances are the more math you can handle the better your work will be.
However, that wasn't the question, it was in effect "how much math should the average person be forced to learn in school?" This touches upon the current fad of piling on more work, more STEM, making younger kids learn what their forebears learned at later ages, and insisting that everybody has to go to college. Algebra in middle school? Sounds like a great plan, but in practice it is utterly moronic and self-destructive. Much of the curricula, workload, "standards," and homework are there not so that kids learn more or become better citizens, but to con parents into believing that their kids are in a great school and have a shining academic future. It's bullshit. Well below half of kids who exit middle school successfully graduate from a four year college program (you'll have to look it up yourself), and it's worth asking what happens to those who actually made it a couple of years after graduation. Let's not even talk about the cost, which amounts to a colossal fine to be paid by those who dare to pursue higher education (unlike in most other societies).
We insist on living in a fantasy world. Who needs manufacturing? We're in a {knowledge | service | innovation | blah blah blah}-based economy! If you don't go to college, you're on your own and nobody gives a shit about you, and you're likely condemned to a low wage forever. If your personality doesn't fit into the narrow demands of the school curriculum, then you must have some phantom mental illness and need to be medicated. Obviously it can't possibly be that the educational system is deeply flawed. If some vastly unhealthy diet is heavily promoted in commercial pop-culture venues and easily available at every single supermarket on the globe, then it must be good! Diabetes, heart-disease, obesity, lung cancer, etc. should be treated with pills that you need to take for the rest of your life, not by avoiding junk food, sugary beverages, smoking, etc. Try suggesting to people that they should only drink sweet soft drinks a few times a month. You yourself probably think it's a crazy suggestion. Next step: shift the discussion of the explosive growth of health care costs to hot-button political controversy where it will languish forever and never be solved.
Believe it or not, all of these are consequences of a moronic, self-destructive educational system that successfully serves a small fraction of the population. What do people learn in school? To feed themselves in a healthy sustainable way? To earn a decent living? To be skeptical of whacko religious, political, and cultural figures and doctrines? To cultivate their minds and bodies to be wiser and more satisfied with life? To build an ever improving society and culture? To help make sure that this lifetime is as good as it possibly can be for themselves, their fellow citizens, and for everyone else on earth? Or do those things sound utterly idiotic and at odds with real life and the education we all end up with?
You probably won't use actual use calculus in your code. You'll use algebra and trig but you may still need to understand calculus.
Simplified example: acceleration = dv/dt. Your code: a = (v2-v1)/(t2-t1)
I would have to agree that it all depends on the kind of programming you are doing. Engineering programming is calculus heavy. Physics programming is calculus heavy. As an example, ballistics is a physics problem which is deceptively simple, but requires quite a lot of calculus to get right.
It has been argued that packages exist to do all of this for you, which is true, but if that's the attitude you have as a programmer you will find yourself playing with other people's toys until you retire. If your attitude is to be the best programmer you are capable of being you may find yourself writing that package everyone else uses. The greater majority of people aren't in that role, and will therefore tell you otherwise. The minority who DO use the math skills are highly prized, and get to work on much more fun things than those who don't.
But a huge amount of computer science is not about modeling the physical world. It is about organizing data or doing accounting or serving up web pages. Advanced calculus does not help at all with that.
Three jobs ago, I worked on electronic design automation that required knowledge of mixed integer/linear programming and graph theory.
Two jobs ago, I needed calculus and vectors for a different EDA tool. Also needed quite a bit of hairy computational geometry.
One job ago, didn't need that much math... just a bit of vectors and computational geometry.
Current job, don't need calculus, but do need statistics.
I would say that most interesting programming jobs require a fair amount of mathematics. The boring, crap, grunt-work IT programming tasks probably don't.
I don't do any calculus in my job. I don't do any linear algebra in my job. I didn't use any of either in my last job (scientific supercomputing).
The advanced math courses I took (including much of the math I learned in advanced CS and chemistry courses) changed the way I looked at problems. I can look at a problem in terms of Euclidean geometry, spherical geometry, (maybe) hyperbolic geometry, or in terms of Newtonian calculus and depending on the situation in terms of predicate calculus or lambda calculus. I'm sure there's other approaches that I was introduced to that I don't know the names for.
Seeing problems from multiple angles changes the way you build things. Some problems are complicated if you use a geometric approach, and utterly simple using lambda calculus. Others are a nightmare using a calculus/algebraic approach, but the geometric approach shows some ways to simplify the equations and get elegant solutions.
I don't crunch numbers using any of the advanced math techniques, but I am a much better programmer for the math classes I took. More math would have made me better.
Discrete Math, Linear Algebra are pretty useful in many programming tasks.
Trig & some Calculus is pretty useful for 3D graphics.
Design of Experiments and stats would be useful for optimization.
Why?
If you do not have a decent grounding in set theory, please do NOT attempt to do any significant database work.
Basic select, insert, update and delete can be dealt with via modern ORMs. Anything beyond that, such as joins, intersections, unions etc. are almost entirely set theory. Where is that covered in the traditional mathematics curriculum?
Yes, some ORMs purport to do that stuff, too, but they rarely do it well.
True story: I was taking a database course as part of my college education. The professor introduced us to relational theory, including an algebraic notation which described subsets of fields in a record and subsets of records in a table. Then, over the course of three class periods later in the semester, he taught us SQL. It boiled down to "this is how you do xxx in SQL." From that, we got table creation/destruction, selects, views, subqueries, aliased fields and tables, inner and outer joins, the whole enchilada. I've been able to build on that and do some pretty heavy-duty SQL work but I had to know the underlying theory. Being subsequently trained in RPG, where much of the legacy code does NOT use SQL (and you invariably don't have time to replace it with code which does), that theory comes in very handy.
We understood the underlying theory, all expressed via math. Learning SQL was a simple matter of learning how to express our desires in a language the computer could understand.
You need at least algebra to understand O(n) notation. Without that, you're usually stuck either cluelessly gluing together someone else's libraries (a LOT of that in modern SoftwareDev) or continually recreating O(n^3) (or worse) algorithms.
If you aren't going to learn calculus, one can only hope you never need to do any kind of Numerical Analysis. Any course where you're allowed to use Mathematica, because the calculus (such as taking the third or fourth derivative of a function) is "overhead" relative to the material being covered, is the very definition of "heavy duty." And, since physics is largely the application of calculus, avoiding calculus means you also need to avoid anything which involves physics. Stuff like game design (Angry Birds uses plenty, Angry Birds In Space uses more), putting rovers on Mars, wireless network design (wave propagation between obstacles and through different media is very calculus intensive); you know, the COOL stuff.
For the typical web developer, creating shiny web pages which do extremely simplistic database work, you probably won't need calculus. Ever. Is that all you ever aspire to be? And how long can you continue to do that without being crowded out by graphics design wizards with increasingly intelligent design tools?
... by the Dew of Mountains the thoughts acquire speed, the hands acquire shakes, the shakes become a warning
It sucks, but your professors will expect you to have a higher level of mathematical knowledge and design assignments that assume you know how to use advanced math. Generally, no, you can look up the forumlas and plug them in or use a package that does the math for you - but your prof may give you ambiguous assignments that you will not no how to solve unless you have the math chops.
That's part of the reason I'm a lawyer and not a programer. Money was also a factor.
I have been through several levels of Calculus, and, admittedly, have never actually used Calculus in any of my programming jobs; but I didn't get high enough into the theory of things to need it. I did some work with biometric scanners, but not the theory end. I just missed a job programming laser cutters that sounded like it would use fairly decent math. I've had one boss and one teacher who worked at NASA; and I wouldn't expect anything that cool without some serious math.
OTOH, I am pretty good at basic math through trig (partly from the calc classes), and it has been a huge help to me in most of my dev jobs. I've had a few positions alongside non-mathy programmers, and I ran circles around them. I once took a professional developer's code, and reduced dozens of complex lines down to three simple math equations. There was nothing exactly *wrong* with his code (except he was getting a logic bug he couldn't find), but three lines is way easier to maintain, and it's a lot more fun to write.
If you want to do anything with networking, masks are easier to do if you understand boolean logic well. If you want to write games--especially graphics--you can be a lot more efficient if you're good at math (and more efficient=faster). Text manipulation is easier to do when you get things such as capitalizing a letter just means subtracting 32 from it. Twiddling the calendar is easier when you get that a month is 30.6 days, and how that reduces date math to a division and an addition.
So, no; you don't need math--all of that is doable without, as long as you have the libraries, etc--any more than you need to be a good runner to enter a marathon. But being good at math will make you more competitive, and a better programmer, and will give you better tools for problem-solving.
Hiring-wise, I would take a candidate that is good at math over a more experienced one who isn't.
There are situations where calculus is very relevant (someone mentioned rates of battery use and estimating time remaining), but even if calculus isn't relevant, it's great practice for the algebra and statistics that is.
I don't use calculus much in my own work, but algebra and statistics get used all the time. Not to mention geometry and trigonometry, but you apparently already know that's important. Also, although I rarely need calculus I do know enough of it to know when I need it. If I'd never used it, I'd probably flail around helplessly trying to come up with a solution for a seemingly "impossible" problem that is quite easy to solve with calculus.
Think of it like an emergency toolkit that you don't use often, but when you need it you *really* need it. And if you don't have training with it, you won't even know how bad the situation is and how much time you're wasting.
In high school I didn't think math was all that important to programming. I was astonished at how wrong headed I had been by my sophomore year in college and tried to learn as much math as I could. You don't need to be a super math genious or anything. But algorithms are really just math and most of what a programmer does is string together algorithms to solve a problem. Some math has direct applications like Linear Algebra, Complexity, Logic and Set theory, while others like learning the transforms (Laplace, Fourier, etc) and other Calculus stuff or Probability is only used heavily in some subsets of the field. But they all sharpen the mind in ways that are useful for a programmer.
A programmer solves word problems. You get a sloppy problem defintion, you refine it and then you write out the formula for the computer to solve. The level of math required to come up with the formula depends on the complexity of the problem you are trying to solve. Most real world problems can be solved by simple algebra and logic, but the more math you have under your belt the more easily you can recognize problems that can be solved better. A transform can change an expensive O(n^2) algorithm into a O(n log n) algorithm. Knowing the math can tell you when that makes sense, and if you aren't good at that stuff you can at least know it and get the problem reassigned before you waste time on a bad implementation.
BTW A Programmer also spends considerable time debugging. This is often just reading the math that others (or an earlier you) has written and figuring out the disconnect between the intention and the reality of the formula. Other times it is figuring out what base assumption is wrong or proving the harware is broken.
I work with software that does Rotating and Recipicating Machinery Diagnostics in the Energy field and we use heavy math quit frequently. Calculating theoreticals curves of machinery performance, predicting failures and maintenance cycle times, and general balance of plant and critical asset assessments. TONS of MATH. It's awesome ;) As many other's have said it really depends on "where" you go in computer science and what interests you have. Some jobs require a lot of math and others require very little. But Math is the foundation of problem solving skills. When you try to solve a proof in logic and sets or work on complicated problems in linear algebra it teaches you to look outside the box, to understand complex systems, and to dig deep into the tool box in your head to come up with creative and simple solutions to complex problems. Math helps you learn all of that.
I have been a self employed full time game programmer for over 10 years. I use trig every week, calculus maybe once a month, and have even dipped into differential equations a few times. It all depends on what type of game you want to make, and what libraries you are going to use. If you are going to write your own physics engine then you must have an awesome grasp of math, even if you use an off the shelf one it still helps to have a background heavy in math.
You may not use calculus, statistics, etc. when you program. I could go on about areas of math that absolutely do matter in programming, such as discrete math. Instead, it's important to realize that the most important skills you can have in programming are logic and reasoning. These also happen to be the most important skills in mathematics. By practicing mathematics, you hone many of the same skills that you would use as a programmer, not to mention that you enrich your own knowledge.
I'm a theoretical computer scientist who slings code for fun. I question the validity of teaching programming as part of computer science. Sadly, that battle was fought, and lost by my side, way back in the early 70's!
I am the penguin that codes in the night.
In relation to the topic, most programming tends to top out at algebra. Some of it uses trigonometry and statistics. Calculus and imaginary numbers come into play during certain, specific engineering requirements. So it really depends on what you are coding, but I would say that you really don't need calculus. What you do need is a solid foundation in mathematics and to be in practice. There are other math-related topics that come up in information technology. A couple of examples off the top of my head would be data structures and encryption. If your math skills are rusty, those topics might not be very easy to comprehend. Another consideration is that any college or university you go to will probably make sure you know your mathematics by having you take their classes (unless you test out of them) regardless of what you took in high school. Speaking from experience as someone that went to a university from a public high school in the USA, chances are that you will probably not be ready for the demands of higher education coming out of high school. You really do not want to be rusty at that point, or it will be that much harder for you (especially since advisers will probably suggest you take five to six classes a semester if you don't want to be there into your thirties).
Slightly off topic, when did a call out against math start? I was required to take 3 years of math in high school. Every math class I had, we covered new topics. I was required to take 4 years of English/Literature. Every year was the same exact thing as middle school, with a slightly higher vocabulary expectation. Read a few books, write a few papers. Done. I can pretty definitively tell you which class was a bigger waste of my time in high school. If they want to get rid of some standard requirements from the curriculum, drop the English classes. If you can't write at a decent literary level after ten years of schooling, you shouldn't be advancing in grade-levels.
Vol~
Most decent developers use so much maths they don't even realise they are doing it due to familiarity with the language.
Korma: Good
When you apply to university, and apply for jobs, you're going to need to somehow demonstrate that you like doing the work and you can do the work. The fact that you're already programming is a good thing, but if you are avoiding math then many employers / admissions staff will assume you don't like mathematical reasoning or you're not good at it. And mathematical reasoning is *essential* to programming regardless of whether you're using the specific coursework.
The type of software you end up making, I used to work for a software company that made applications for lab testing so you needed to know Integrals and Derivatives.
I've found that while I don't do complex math at all, the skills of solving through problems and equations (especially identifying *where* to begin on a project or problem) have been invaluable.
Not everybody does, but I use higher math skills pretty frequently (calc, diffeq, linear algebra, statistical analysis, etc)
These things are tools, and you can only use them if you have them.
To insert the mandatory car analogy, if you only have a small hatchback, you'll probably do just fine. You can generally get where you need to go, and you probably won't miss the things you can't really do. You'll just avoid the stuff that requires something else, like trips to the hardware store, or whatever else.
But imagine you also had a truck. Sure, maybe you use the hatch most of the time, but when you really need it you have a tool that take on some heavier jobs.
These other skills are just like that. You'll get by without them. But if you have them in your back pocket, you can do a lot better than just get by. You won't ever see "Must be able to solve second order differential equations" on a job opening. You won't ever have your performance measured in # of integrals / day.
What will happen is that you will be the person who can solve problems that other people can't.
Some examples from my workplace over the years:
Replaced unreliable/unstable linear fit noise filtering algorithm with one based on FFT and low-pass filter
Multi-variable curve fitting of empirical data to assist designers
3-d field solver to model silicon failure
Detailed statistical analyses for yield prediction
Nobody came and asked us to do these things. They came to us with problems they couldn't figure out and we did.
Understanding why the math works makes the programs work. Understanding probability and statistics make my inline sampling calculations correct. Understaning how spline calculations work make my curve approximation code (or even the use of curve approximation libraries) correct.
Yes, there are a lot of good libraries out there. They are optimized. They are error-correcting. They are correct. And knowing what they do and how they work enables you to use them effectively.
When you talk to your clients (or your bosses) and they ask you about how you did something, the ability to pull the core math and explain it will go very far.
It is kind of like lifting weights. The lifting isn't its own end. It makes the daily (carrying 40 pound boxes of cat litter into the house) mundane. So it is with math. Understanding simple things as polynomial interpolations for higher-order polynomials can make or break your ability to project storage estimates. Understanding O() notation will help you program well.
Don't scrimp on the math. There are enough bad systems out there for other reasons already.
"I'm a high school student who is interested in sex. I've been told by teachers and parents that sex classes are a must for any teenager. I've been dabbling around with the opposite sex for about two years now and have been masturbating for longer than that, but I've never had sex for real. What are your experiences?"
If you're trying to model something that is governed by calculus, then knowing the calc will help you model it. And it doesn't take much for something to need an integral, or differentiation.
The question you're really asking here is "Is it worth all of the hard work to learn higher-level math, or will I be content to just be a low-level code monkey?"
I know of at least one company that opts to hire mathematicians and teach them programming, rather than hire programmers and try to teach them math.
It may look like I'm doing nothing, but I'm actively waiting for my problems to go away.
--Scott Adams
Math is a filter. At least here in Germany. 120 Students start CS, by 3rd Semester 85% of them have left and given up. The lectures move from the auditorium to small rooms where the Prof. makes tea for all and then discusses advanced boolean algebra, logic boards or the neat learning computer he built over the years.
Math filters the cream from the crop. If you make it past the first 4 Semesters, Math disappears, never to be used again. Unless, that is, your joining your CS with an even more hardcore field like engineering or something.
I hate Math just as much as the next guy, mostly because I hate the inherent historically grown ambiguity of its notation standards, but in a way I'm also gratefull. That way, when in about 4 years I get my degree I won't feel like a wuss, but rather like someone who's actually studied something that is - you know - worthwhile going to college for. ... I'm actually reading myself for a late career move into a degree in Business Informatics. And the Math stuff scares the shit out of me. ... Guess I'll just have to grow some balls and man up. It will be tough, and I'll pass my math credits by the skin of my teeth, but I also discovered that the hard stuff is part of the fun.
Of course, wether or not I make lots of money once I have a degree, that is a different story. I'll be continuing my business moves on the side. ... But, as mentioned, also doing a lot of math I've never heard of in 25 years of programming.
We suffer more in our imagination than in reality. - Seneca
This dynamic is true in many engineering fields. You can get through many engineering careers without ever actually using calculus, for example.
However, you still need to learn calculus, and the other higher maths, because doing so will change the way you think about dynamics, numerical, and physical relationships. Seriously studying calculus will in fact warp your brain, but in very useful ways. Even if (when) you forget how to do an integral, the underlying concepts will still inform your thinking - and that's what you really need, and will use daily.
I only really use algebra and maybe some trig from high school for the vast majority of what I do as a software engineer working mostly on embedded systems. Without a very strong grounding in those subjects, I wouldn't be able to do what I do.
But that doesn't mean that high school math is sufficient. Without the calculus and discrete math classes I had, I don't think I would have nearly as strong a basis in the "lower" levels of math that I need regularly, even though I remember very little calculus. And to be perfectly honest, I feel at a disadvantage at times in not having a broader knowledge of some of the higher math concepts. That would provide me with a richer tool set from which to pull solutions. But that can be said also for other fields entirely, like biology. Many of the more interesting problem solutions require interdisciplinary knowledge; think about genetic algorithms and such. I haven't the first clue about genetic algorithms so they don't exist in my toolbox, which is unfortunate.
So the question of what math is used by SW engineers on a daily basis won't necessarily get you a useful answer. As cliche as it sounds, the broader your knowledge base, the better able you will be to solve types of problems that you can't possibly anticipate while you're in school, even if you know exactly what field you want to go into. I don't regret a single second of the math classes I took; on the contrary, I wish I had taken more (especially after taking the Crypto class from Coursera).
Unless you love coding from a detailed spec with no room for creativity (form shall have a field 254 pixels wide at coordinate 123,321) some day you'll be talking to a customer, user, client, etc who doesn't know squat about software, but they will describe their problem using calculus, or more likely, you will find that calculus provides the basis for a common understanding of what they want to do
I use math (most recently differential equations) regularly. However, being a code monkey was never my objective. I have written software. I have designed hardware. I have solved system algorithms. I have managed people. Do not limit what you learn. My learning of math has helped me. My learning of civics has helped me. My learning of philosophy has helped me. Soak in everything. The more you absorb, the more prepared you will be.
I was one of the first TR100 (now TR35 ) and I have lead R&D for a fortune 100 company. Please do not set your sights too low.
To start with, I'm just going to say it outright: I am not a programmer... not really anyway. I know Pascal and even then not all that well, I made a battleship game and that's the most impressive it gets. I have also done a little bit of working with Rhino for 3D models and AutoCad, but once again nothing very noteworthy. I have, however, done quite a bit of math. I may not be the most experienced, but I can tell you this: Rhino doesn't do Calculus, AutoCad doesn't do calculus, and Pascal... well... I'm not so sure it even does halfway decent algebra without you baby sitting it. It could be that I never stumbled upon the correct functions in the programs, but it annoyed me to no end when I KNEW the equation for the shape I wanted, and Rhino and it's hurp-de-derp ways wouldn't let me put anything in but the occasional point. I'm sure there are better programs that actually do that, and I am certain the School's programs were just crap, but the fact remains: You don't "need" calculus. All of your teachers in 6th grade that were telling you that you would "...need algebra in the real world." were liars, but only because of how far computers have come and everything is done for us.
So no. You don't "need' math to be a decent programmer, or maybe even a great programmer. However, there are MANY higher, way up there programming jobs for which you need calculus and/or up. So I guess to sum this part up: If you absolutely detest calculus, or can't wrap your head around it, or some other reason. It won't stop you from programming. Greatly hinder, perhaps, but not stop.
I do believe, however, that everyone should try and go as far as they can in math and it's because our modern society runs on math. Indoor Plumbing, computers, TV, our waste management, snailmail, spaceships, wind up toys, candy bars, medicine. EVERYTHING relies on math at some point, and if we as a species don't keep ourselves sharp and practicing math, if something collapses, we can't do anything about it. If, however, you're the type to just go "Pffft" at the possibility of such things I have a second reason. Logic. Math practices your logic skills, and it will make you a better programmer. It's just that simple.
Programmers who don't know calculus (or don't actually understand what it means) constantly re-invent it. Badly. And they don't know they're doing so, so they don't realize they're turning a wrench into a hammer.
Rate of change (derivation) and accumulation of changes (integration) are fundamental calculations that pop up again and again, especially when you're dealing with actual hardware.
How long will this servo acceleration ramp take to get up to speed? Calculus will tell you exactly, for your expected position minus any PID issues, or you could try one of the variety of bad kludges I've seen to estimate it.
Of course I use trig all the time as well, and matrixes are useful tools for all sorts of things (transforms, solving systems).
I haven't found much use for differential equations - I guess my physical processes aren't quite physical enough.
I'm an engine programmer at a major AAA developer, and I use calculus and differential equations daily.
Then again, I'm a practicing engineer. I moved from hard stuff (aerospace) to easy stuff (structural) 'cause I'm lazy and I wanted to live where there were few aero firms.
I use the results of calculus every day, but I don't have to do calculus longhand. I have done basic spreadsheet modeling and a very, very small bit of programming to ensure that I don't have to do calculus - but without learning it and understanding the concepts there's no way I could have built the tools I use. Further, the mere understanding of calculus means that I can mentally estimate faster and realize how the various materials will interact without having to put a pencil on paper. In other words - I can solve most problems in my head, with very few numbers. Now, that may not seem useful in a profession where answers on paper are my meal ticket, but think of it this way: I only have to write down my problem and solution once rather than trying several different options because I already know what the correct answer will look like.
You won't use 99% of what you learn on a day to day basis, but the ability to understand and be able to apply that broad background is the difference between a $30/hr technician and a $150/hr professional. Now, if you plan on managing people or money, your skill set will need to be entirely different, but that 99% rule will still apply.
Is it just my observation, or are there way too many stupid people in the world?
No, I highly doubt you won't use it much in your daily programming life. That being said...
1. Some of the benefits of these courses is not in the content itself, but in the mental exercises in logic and reasoning.
2. Unless you plan to work for yourself, a degree is usually a good choice. It is VERY likely that any CS degree you seek will contain un-escapable upper level math requirements.
In support of a degree.. A degree can show potential employers that you can stick with something, that you can jump through hoops that are outside your area of interest, and that you have made it through one of the most commonly used hiring filters in the industry.
This is mostly anecdotal from my own experience in college but...
I noticed a stark difference when a math course is being taught by someone who's primarily in the math department vs. someone who's in the engineering department (I guess we had a shortage of profs to meet the demand for the higher level courses we were required to take).
Math profs in my experience seemed more interested in just treating the course like an SAT prep class, where they just teach you to a test they're going to give out, while the engineering profs who taught math were more interested in driving home why the concepts they were teaching were important.
So the result was the math profs style lead to a feeling of boredom and pointlessness, whereas I felt engaged the engineering profs classes, and my grades reflected that.
Yes, you need a strong grounding in Math to ensure you understand all of the underlying concepts, even if you don't need to implement them yourself. Like learning the CLI before falling back to the user-friendly GUI. Eventually you want to do something the GUI can't, and you're back at the command line.
Besides, most programmers son't spend their whole life as professional programmers. In fact, some who start out in that direction end up elsewhere. Why limit your choices later in life by short-cutting now? If nothing else, the rigor provided by math will suit you well whereever you go. And while you're at it, please take a statistics class. About 85% of americans couldn't tell you what 85% actually means.
I build mapping software that is used to perform complex geospatial analysis, predictive models, etc. I use math all the time. "Math" is pretty damn broad though. Usually the business logic catches you way before the math ever does. In general, if you want to be a real badass programmer, you need to make sure your Discrete Math is top notch more so than Trig or Calc.
The only subjects you are guaranteed to use directly, that you learned in school, are the three Rs, reading, ritin', and 'rithmetic. Some subjects change your brain. Forced to do the abstract reasoning required to do higher math, your brain will change to accomodate. I made my kids study music for similar reasons. Some subjects are there to try to make a good citizen out of you, hence history, social studies, geography, government. Some subjects are there to enrich your life, and make you think about yourself, the world, and your place in it. To help to make you a moral person, not just an obedient person. If school were simply about preparing you for your future job, we should all be doing apprenticeships, instead of going to school. However miserably it might fail at that goal, school is supposed to foster thoughtful adults who are able to enjoy more than sex and professional wresting, who are good citizens, and moral people.
If you cannot understand linear algebra, there is no way you can claim to understand things like Big O or algorithmic complexity in general. Any coder who does not grok those types of things will be more trouble than they are worth.
I use math every day.
Frankly, why is math the one thing that gets asked this question so much? You do, of course, realize that math is one of the courses most disciplines require their students to take, yes?
PS: I don't reply to ACs.
>common sense on slashdot
>mfw when i dont have a face
Games and scientific - YES; everything else maybe.
I use more statistics than calculus in my programming.
What you really need to understand is boundary conditions. Most programming errors are because someone can't recognize that 11 10 or that -1 is lower than 0. You get the idea.
Even writing GN&C code for spaceflight, I didn't use calculus most days, but understanding the ideas of limits, slopes and integrals **was critically important.** With my peers, we laugh at people who only use 4 dimensional math. Such is the life of real rocket science.
Being able to have a conversation about differential and integral calculus with your peers and not look stupid is really what learning higher math is about.
http://xkcd.com/1050/
Not everybody needs to use a nondeterministic finite state machine every day, and not everybody needs to calculate the transitive closure of a sparse connectivity matrix every day, but these are (simple) examples of reasonably commonplace algorithms that you can't really understand without being able to do the maths.
As an even simpler example, you can't really use SQL effectively without understanding the maths behind a relational database. I know this for sure, because I keep coming across SQL applications that were clearly written by people with no understanding of the maths, and I get paid lots of money to fix them up properly.
Knowing higher order math is not required for being successful as a software engineer. Not even a little bit. There's more than enough low hanging fruit that you can do amazing things with just simple arithmetic.
That said, the more math you know, the more fun you'll have, and the cooler jobs you can score. It's one of those things you absolutely should do despite the pain (it's only painful as a student; on-the-job it's fun).
I never did. I was in a gifted program and ended up reading philosophy for most of high school rather than taking calculus (I was too lazy to do both). I went to undergrad for political science, and then law school. But I've been a full-time software engineer for most of that time, and I seriously regret my lack of higher order math skills. I can learn how to implement and apply most algorithms, but they're not especially clear to me because I can't related them to a larger set of concepts. I can code an FFT, for example, but don't really understand it. Kind of sad.
Also, number and set theory, and combinatorics, is widely applicable throughout all computer science. If you want to bone up in just one specific area, that would be the one.
I am actually the only programmer where I work who does not have a Phd in Mathematics. Definitely depends on the field, but in my industry, it is essential.
Q1: "Will I actually use calculus and above?" Who knows? Maybe you'll find that it's an enjoyable endeavour in its own right - it may not be a practically useful skill but it will enlarge and enrich your understanding of concepts that you'll not find otherwise.
Q2: " is it just a popular idea that you need to be a mathematician in order to program?" Is it a popular idea? I've certainly never encountered it. A mathematician is not someone who knows a little calculus. Modern mathematics (which, presumably, is studied by a current mathematician) is a wide-ranging and diverse field of which numerical calculus (I propose) is a rather tired and scantly addressed matter. Let's face it, most calculus that you'll probably ever meet would have been cutting-edge say, ooh, 150 years ago (Gauss' theorem of integrating over a surface... to pick an example from the top of my head)
Q3: "What are your experiences?" Programming since age 9, introduced to discrete calculus in programming in second year of Physics BSc (all in FORTRAN), 4 years writing numerical integrator-assisted tools for reusable launch vehicles, Physics MSc (no calculus), Physics PhD (trivial integrators written), postdoc (ditto), self-employed (no calculus).
But hey, why should one study something purely because you hear that it might improve your employment prospects? Do you find it satisfying and interesting? Aren't these reasons enough for studying it or is your schedule really crammed?
Lots of software engineers have made careers out of doing nothing more than rendering content from a database into html pages and then putting it back. But plenty of us have made careers out of difficult math, too. The world is chock full of optimization problems. Want to manage equity trades algorithmically? You're gonna need some pretty sophisticated math. And not surprisingly, the same applies to managing a portfolio of search engine keyword ads, or anywhere else where you've got a large collection of item of varying performance and you need to optimize returns. Want to optimize energy consumption in a skyscraper? Yep, math. Want to encode or decode audio in a lossy format? math. encrypt or decrypt data? math. Optimize kernel scheduling? math. Render 3d objects photorealistically? math. All tasks that have appeared on my resume.
Sure, there are libraries available to perform some of those functions, but the libraries didn't write themselves. And guess what? It's pretty easy to find engineers who can read documentation and make use of a pre-existing API in India or China. But finding engineers capable of developing sophisticated mathematical algorithms is something that still mostly happens here. Guess which type is going to be able to remain employed in this country over the coming century...
Wheather you need continous math such as Calculus depends on if you are programming in a area that uses continous math. Like mathematics, statistics and many others. All programmers use discreate mathemantics, if they know it or not.
Every day.
Way more than I could have ever guessed - finding missing money in hundreds of millions of transactions due to rounding errors in the two seperate validation processes (only apparent after millions of transcations - small data sets could not replicate the issue). Even complex math of calculating the rental cost of actual useable land along a curved (and seasonally and/or yearly) changing river. The bigest usage of math involves money and prefection is a must.
Plus, the logical math solving skills are adapted to daily problems. The math classes on proving theroms is extermly valuable.
I use it to help memorize things, count things more efficiently, evaluate a sale item or purchase, just generally in many every-day situations I find it valuable.
I am a law student and math is generally not used, but it is extremely important to understand math when it is being used. So many bad policies and bad law are created because people have a bad understanding of math. What do I mean? Think of simple expected value probabilities, or cash/market flow rates, or risk analysis, or optimization equations. Many times we think of math as a collections of functions, but really math is a strategy and mindset that is utilized to solve problems -many times using the most common functions-. Every time we make a decision we are evaluating the consequences, which almost always require some sort of mathematical analysis.
I think the more advanced math we know, the more ready we are able to make the best decisions about things. Our brains need the exercise if nothing else.
I use high level math in graphics. Sometimes to do actual graphics tasks, other times to verify that some piece of code is mathematically correct.
Recently, I had to calculate derivatives recently for splines. I couldn't find a package that did quite what I wanted (with a license that would work for my task) with splines which meant I had to roll my own. Splines are used everywhere in computer graphics and video games, namely for animation. In implementing my own, I found that I had to use a fair amount of calculus and linear algebra to understand a) which spline algorithm met my criteria and b) to understand the math behind the splines well enough to implement them.
You don't need a lot of math at all to program, you can program your DVR
to record a certain show easily and all you need to know is how to type the
number 0,1,2,3,4,5,6,7,8,9 (I've included them for your reference). You find
these numbers next to the show you're recording in TV Guide which you can
pickup at the supermarket checkout and there are also websites to get these
programming schedules from.
Taking the lead from your very question, pretty much what we expect you to
work on may require some knowledge of basic arithmetic and very basic algebra.
The most difficult mathematical concept you might encounter are fractions and
percentages that are a special case of the former.
You see, from a profane like you, who asks "how much math do I really need??",
not much is expected. You will never explore, you will never break new ground,
and that is well.
If you're interested in game development or computational science, linear algebra is a must. Much of that relies on calculus. I took linear algebra before taking any calculus classes, and the later half of the class was a pain in the ass (so take it in the right order). But all my work has been in benchmark and system software development, and integrals is the only thing I've needed from calculus so far.
For everything else: discrete math, algebra, and statistics.
Really, you can get by programming with just discrete math and algebra, but I've found statistics useful in every day life and in explaining results in simple terms. In any case, put in your time with the higher level math. It's not as scary as it sounds, and you'll be glad you had exposure to it later... even if you rarely use it. And this is coming from a guy who whined "when am I ever going to use this?" during those classes.
If you have an opportunity to learn something, learn it. Everything will be useful at some point in your life, and barring that will still enrich you as a person. More specifically, math-wise, if you're going to college you may as well learn basic calculus, linear algebra, and statistics. How much you will actually use in a CS career is debateable, but that knowledge and especially UNDERSTANDING will help you many times in the long run.
I used to think the same thing when I first came out of college... But actually use math quite a bit in my current job. (Software Architect in a research lab) I use Linear Algebra (which for me, in college comes after Calculus 3), as well as Calculus. You probably will too if you say you want to go into gaming, particularly when you start looking into sensor input. I'm not doing gaming, but I'm looking at sensor input, for things like gesture tracking/recognition, sound analysis, as well as more basic things like looking at accelerometers and magnetometers. I didn't really use Number Theory directly, (graduate course for me, and I flippin' hated that class), but we do have a Math PHd on staff, and I did have to consult with him a number of times.
I math all the time. More often then I linguistic believe it or not.
Well being in a math PhD program which requires a decent amount of programming algorithms in a combination of Python, C++ and Matlab.. I'd say yes, I use a lot of advanced math with my programming. Also, for the question above, you evaluate integrals numerically in a language like C++. There's a whole field called numerical analysis that thinks about questions like these.
You CAN program without math. You shouldn't want to. Not understanding higher level math cripples your ability to work on hard / interesting problems, which are the only real problems left. This aludes to a mentality of "what is the least I can do to get by?" which is an immediate turn-off to hiring. Most people can grind out glue code, or marginal UIs [1], but the pool of programers that can is huge. As a competitive advantage, you should always aim to push your skillset out beyond all of your other peers.
For your chosen field, the above course groups are of prime interest. LA is critical for graphical programming, optimization programs (pathfinding for example), or solving large, matrixable datasets (pixelized display fields). Graph Theory also plays heavily in optimization, pathfinding, information flow, decision making, and procedural programming (L-trees, fractal growth, ect..). It also plays heavily with LA. Finally, Calc. is necessary if you ever want to figure out how fast things are happening (trajectories, computational flowfields), for computing numerous types of gradient style lighting effects, or for figuring out how much of something you have (total resource accumulation, ballistics/object movement with time, ect...). In the case of calculus, you may not actually write integrals or differentials, but it is critical that you understand what they're doing, and how they are approximated.
Note [1]: Good UI creation is hard. But that requires almost as much study in human factors and interface design as the math side does
Disclosure: My day job is at NASA, so I'm biased
If you really want expert advice, ask an expert:
http://www.pcper.com/reviews/Editorial/John-Carmack-Interview-GPU-Race-Intel-Graphics-Ray-Tracing-Voxels-and-more/Intervi
http://www.youtube.com/watch?v=VcWRc1wK3gM
The bottom line is Math is to a Programmer as a Hammer is to a Carpenter.
I've been doing a lot of matrix multiplication and rotates with quaternions lately, for satellite orbit and attitude calculations. Eigen, by the way, is a very nice library to do that stuff with in C++. Prior to this, not so much. Some degree of math aptitude has been helpful to me in many of my programming positions, but very few of them required a lot. My Logic and Analysis classes have come in handy more often, but I took those in high school, too.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
...you're able to think critically, and to discern which evidence is relevant to the case in point. I don't care if you can use the Simplex method to invert a sparse 100x100 matrix in your head, but I DO care, as an employer, that you know what the Simplex method is, when it would be useful to apply, and what class of problems it can be used to solve. So, higher math is just evidence to me, your prospective employer, that you're not prone to take the easy way out, to rely on trusted (but irrelevant) methods, that you can seek out new solutions when they are called for. Without that breadth of background in the "thinking arts," you are doomed to a life of programming what others design. Most of the people who claim certain languages don't support certain advanced math features are just exposing their lack of imagination; they are coders, not programmers.
Your standard business application probably isn't going to use much more than basic algebra
I used more advanced mathematics in graduate level marketing classes than in graduate level computer science classes. I was quite surprised and happy to see that marketing can be based on scientific modeling and not just numbers pulled out of ... uh ... the air.
But it all depends on the needs of the business you are trying to support.
The problem is that when you are in college you do not know the "needs" you will be trying to support in the future. I was once unexpectedly offered the chance to port some of Dow Chemical's polymer analysis software from mainframe to PC. I was working directly with world class chemists. They did not expect me to be a chemist but they did expect me to be scientifically and mathematically literate. Those two quarters of freshman chemistry for general ed and the three years of math for computer science were useful. It opened doors that would otherwise have been closed. That is the point of a university education rather than a trade school education. The trade school can teach a person to be a good programmer, just as good as a university, but the trade school graduate won't have the option to participate in unexpected projects like the one mentioned.
I use a lot of math in my work. From ballparking load estimates using basic math to behavioral analysis using linear algebra to data analysis using calculus, I use it all the time. Set theory, logic, graph theory, statistics, on and on -- it all contributes significantly to getting the job done right the first time. Having a background in a variety of maths also helps to visualize problems and shape solutions. I've added as much to my math skills since becoming a professional programmer as I did in school.
There are fields in software, like interaction design, that don't require a strong higher math education, but if you have a good math background it will give you the freedom to explore more opportunities.
Stop-Prism.org: Opt Out of Surveillance
In the corporate environment, Calculus is very rare. You really only use basic algebra for most programs. Only really specific applications require anything more.
Of course, it is usually suggested to take them (or required in the coursework) because of some idea that it promotes higher level thinking, but I think it really depends on what you need to think properly. For me, I'm terrible at Calculus; but I can still write code without an issue.
I read the title as "How many of you actually use Meth".
You need math to make engines like Unity3D and OGRE, or any programming where someone will pay you more than midway through middle class level. Not that there's anything wrong with middle class pay; it's quite comfortable.
As a software engineer I use math all the time, but maybe not the way we think of traditionally using math academically with chalkboards full of scribbled formulas and equations. Numerical analysis, discrete math, cryptography, linear algebra, statistics are all post-calculus subjects that are fundamental in software engineering. Having a solid education in these subjects will allow you to be a *better* software engineer and problem solver. At the code level it's mostly operator precedence and other trivial math fundamentals, but at the algorithmic analysis level understanding advanced math concepts certainly helps and is even necessary in many circumstances.
What you need is the ability to think like a mathematician about problems. You know all those annoying story problems you had to do? Well programming is one story problem after another. You have problems to solve and you don't always have all the pieces. You also get a bunch of useless data to go with it. You need to know what's important and what's not.
As others have pointed out, discrete is essential to understanding computer science. Colleges require you to do a bunch of math classes so you might as well suck it up and get through it. I hated most math classes, but discrete is actually fun.
What you really, really need is Statistics. It's everywhere.
Despite my username, I am a mathematician, and I can say doing mathematics definitely affected the way I think. Of course I do math as my job, but I also think of the rest of my life in very mathematical terms.
For instance, to measure my productivity I have created a detailed spreadsheet of my progress and the hours that I work. I view my efforts as a dynamical system, and potentially I can use this to clarify and understand the periodicity in my productivity using differential equations.
I view my purchases at the grocery store as an economic system and I have often come to rational decisions about money management using decision theory.
When I drive I think of minimizing the time of my route using traffic models. I probably haven't gained much on my travel time but looking at everything mathematically has clarified my view of the world.
My point is that every problem I encounter my mind can't help but look at it from a mathematical perspective, and the act of formulating problems in a precise way with all the necessary hypotheses have helped me solve many problems, even those that don't require heavy mathematical machinery. Mathematics isn't just solving specific problems but looking at a question from all perspectives and formulating thoughts in an extremely precise manner. These are things I of course did not do before I started to study mathematics.
The effects on me are pretty apparent because I have been doing mathematics for so long but I believe even a little bit can be very useful.
"What lies behind us, and what lies before us are tiny matters compared to what lies within us." Ralph Waldo Emerson
No, you won't use calculus as a programmer. If you want to more than the most boring and repetative programming jobs, though, you need a sound understanding of discrete math and preferably computational theory. The jobs where these are needed are the fun, fulfilling jobs where you feel like you did more than just rewrite the same form in a slightly different format over and over. If web design is your thing, you won't need as much math as you will need art and HCI skills. But you'll also be doing the same thing in slightly different colors every day for the tenure of your career. It's your call. You can either learn math or trust that the people who did wrote the libraries you are using correctly.
I do every Friday...oh, I though you said meth. Sorry.
I've gone all the way up to calculus 3 (vectors, multi-dimensional functions, and doing differentials and integrals therein) and I've yet to see calculus applied by any programming. I am curious how one actually implements it though, in what (limited) programming I've done, I haven't seen any clear way to calculate say an integral using something like c++ or c#.
One example. Think back to class and there should have been a discussion on the approximation of integrals. Creating rectangles or trapezoids for subintervals that fit "under" the curve. Using the area of these subintervals to approximate the area under the curve. The more subintervals the more accurate the approximation. Its not hard to match the precision of the floating point hardware in the CPU.
I use math ALL THE TIME in my job as a software engineer. Regular calculus for projections from data and calculating rates of change in near real time, lambda calculus (and to a lesser extent some other Greek letter calculi, but they're not the same thing as Newton- Leibniz calculus) for functional programming and to a lesser extent LINQ. Bayesian statistics for abduction, regular statistics for event correlation and alarm stream analysis. Animats above makes a good point about tensor calculus, though it's being slowly supplanted by more modern analysis. If you're interested in computer graphics you're going to want to understand quaternions for point-set rotations and transforms or if you're ultra, spinors and Clifford (Geometric) Algebra.
In areas such as Ray Tracing, there is extensive use of Vector Calculus, Probability theory, and Linear Algebra. Where (having learned under Henrick Wann Jensen) the current state of the art techniques are based on random distributions of "photons" being stored in a "Photon Map". The math here can get advanced, from Markov chains to arbitrary Brownian motions started at vector position x (in R^3). So.... Yes, it's there. You just don't see any of it because you're not handling the hard stuff... you're handling API calls. What do you think happens under the hood?
Eat sleep die
I've recently played with digital image processing algorithms and found out that understanding even simple things like resizing pictures is impossible without solid math background. Not to mention more complex things like convolutions or conversions between time and frequency domain. Generally good Calculus and Statistical background is great for any kind of DSP techniques be it music, images or data from any other kind of sensors.
Almost every shop I have been in over the 30 years in this business has required statistics. These days, in order to evaluate database performance, you have to do statistics. In one shop I had to write a program to collate the statistics to tell me it the 30+ processors in the back end DBMS were performaning, to help find bottlenecks. In one case, I had an analyst that did not understand stats, and if we had followed her directions we would have truncated off valuable data.
Calculas - not used in 30 years, not sure how much of it I even remember.
Algebra - this is the meat and potatoes of programmng.
Seeing a series of equations and what they result in: In one case a few years ago, the one step in the process was being executed twice, adding shipping time into the equation for calculating lead time on product to the ordering both at the begining and end of the process. 1 line of code was holding 10$ MILLION in the warehouse, wasting capital, and rental on warehouse space, for a certain major entertainment company.
So, do you use math? Define math, define where you are going to end up in this field.
Oh, and DBA - set theory is also used.
"An anonymous reader writes with a question that makes a good follow-on to the claim that mathematics requirements in U.S. schools unnecessarily limit students' educational choices"
That is a bit of a miss-representation of the previous discussion. The question before was about Algebra. Specifically many non-technical people rarely or never use Algebra in the real world. Forcing them to learn multiple years of Algebra is a waste for them.
A simple intro would be enough and then those who are interested and going into fields where it is needed, such as programming, engineering, biology, chemistry, statistics, etc, can then go deeper into the math.
However, there is a lot of math below Algebra. For my wife Algebra was a waste. But she uses addition, subtraction, division, multiplication and percentages on a daily basis. Basic math is key for almost everyone. Algebra for a much more limited group. Calculus for us very few who need or enjoy it.
Learn what you enjoy. Enjoy what you learn. Pick a field of endeavor you'll enjoy. It all flows together and that makes life more pleasant. Don't be a Dilbert.
Any idiot can use a syringe and a scalpel, but if you were in charge of hiring doctors you'd probably prefer the candidates who have their medical skills in order.
Time flies when you don't know what you're doing
From an objective standpoint these are among the worst programming jobs in existence
Yes and no. It depends entirely on the company you work for.
the kids won't actually get to design the games – that's done by completely different teams of people. They're just coding to spec
No. There is a lot of feedback and interaction between designers and developers. At the good companies the "design" comes from individuals of varying backgrounds and roles, including programmers, including QA. Things depend far more on the quality of your suggestions than your job description.
While the amount of math one actually uses day to day can vary a lot depending on the job, what doesn't change is the need to solve complex algorithmic problems.
Obtaining a high level of mathematic education is excellent training for the kind of thinking you will need to become a successful developer.
I would also add that it depends on why kind of a developer you want to be... if you want just churn out flash game or something using an off-the-shelf engine then sure, you will probably not need much more actual math than addition and trig etc.. But if you actually want a good future in the industry (read "good salary") you need to have a very solid understanding of statistics, probability, complexity, machine learning, tensor calculus etc.. etc.. all of which require the fundamentals of math that you will learn right up until college and beyond.
So it depends, do you want a crap job making small edits to some 2nd rate game, or do you want to be challenged? Seriously, a good math background can make hugh difference to the kind of jobs you can get.
One other thing: technologies change quickly, Unity3D (or whatever) will be crap and old by the time you get to seriously looking for a job. Numbers will still work the same. So learn the math first, then "play" with the engines, but keep in mind thats all your doing - playing.
So, suck it up man and hit the books. Math is good for you!
I write software using java that performs image manipulation. Knowing which math to use, for example Cosine and Pythagorean Theorem to compute the new effective width of an element rotated n degrees within a canvas, can make the difference between several hundred wrong tries to slug it out with simple math or the one right way with more advanced geometric and trigonometric functions.
It's also helpful in my garden for figuring out how many rows of corn, beans, etc. I can fit in a given area based on optimal spacing for the soil type. It's mostly basic math but once in a while some trig helps.
(6 x 7)
I once had an engineering professor that claimed that the common sense would be trained out of us. And it is true. A repeatable process to be creative and ensure safety and complete thought is critical to STEM education. The basis is the mathematical training we all receive in middle and high schools.
Beyond the basic Elementary and Middle School math, numbers are not as important. Higher mathematics education is largely about learning to think critically. So, while many of use do not use much more than basic algebra in daily home use, we use the skills taught to rationally address problems in our lives without even focusing on the task.
Do the numbers matter? Yes. In Engineering and higher level work, the numbers matter. What matters just as much is HOW those numbers are obtained. A repeatable process.
US: Math
UK: Mauthe
In undergrad (CS) I did more math than was required, and honours math at that. When I started grad school I was introduced to a transform we were using to analyze medical images. There's an article somewhere where I'm quoted as saying that some smart grad student is going to come along some day and improve the algorithm for calculating that transform so that it's actually practical. It turns out the smart grad student didn't come along, so I had to do it. That involved a lot of calculus, both continuous and discrete. Now I mostly develop new medical image processing techniques and analyze data, which involves fairly high level statistics. Statistics is all calculus and, when you get further on, calculus and linear algebra.
You say you want to be a game programmer? Here are some of the papers from SIGGRAPH this year. Take a read through some of them. This one might be a good place to start... most of the authors are from Pixar. How much math do you see? How much math do you understand? These are the algorithms you'll be working with by the time you graduate. Note that there isn't a lot of continuous calculus in these (but a lot of discrete!). Somebody has already done much of the hard work of discretizing it for you. That's not always the case.
You can probably get away with not learning any math and being a run of the mill code monkey. If you want to be good at what you do though, learn the math.
Daily to the point where I don't even understand how much I use and I'd probably have problems going back to basic Calc 1 and Calc 2 problems.
Top level: I design controllers in Simulink to ... control stuff.
Right off PID controllers. First one is algebra. Second two are calculus. Integrals and Derivatives.
Since these are all driven my microcontrollers everything is in discrete time, so Z-transforms. Which are based on S-transforms. That was Differential Equations 2 I believe, built on DiffEq 1. Built on Calc 3/2/1. And then there are Bode diagrams, system identification.
The logical thinking you will gather from actually *learning* mathematics (as opposed to memorizing theorems) will be extremely handy. You can really tell the difference between a developer who has advanced mathematics experience and one who does not, as the mathematics helped develop that persons problem solving skills.
And some jobs require advanced mathematics as well, but not all of them. Your common web-application won't require much more than iterative basics. But any kind of graphical manipulation will be benefited greatly with mathematics experience. Of course there's always google to find the exact forumlas, but being able to understand those formulas/know about them comes in handy.
I've been in computer science for around 30 years. My experience, in order of decreasing importance:
As you suspect, calculus does not come up unless you are doing something very domain specific. Differential equations are bloody useless, even as a math course, at least they way I was taught: trust the cookbook, don't ask questions about why they work. Again, maybe useful in a specific domain.
That said, I found calculus to be useful as a gateway to fun courses in relativity and quantum mechanics, and it can be a useful way to think about some problems (continuous instead of discrete).
Enjoy life! This is not a dress rehearsal.
You can't understand it without Calc 2, therefore you need Calc 2. And if you don't understand Big O notation your not a real software engineer. Hence, you need calc 2 (QED).
No, the point of a challenging degree program is to maintain academic standards. To be awarded a degree you need to have achieved a certain standard. If the sole aim was to limit the number of graduates in a program you would simply limit the enrolment. When we have been hiring IT staff one of the things we have looked for is a degree because this shows that they have some depth of knowledge beyond the basics. Sometimes the confidence that this brings can be very important for adapting to new situations.
I just helped a friend out with a ton of javascript animation for his webcomic (blatant plug: http://www.prequeladventure.com/ ), creating a 3d, semi-interactive environment, all in JS/CSS, and I ended up using a ton of math for it. Simple offset calculations, trig, parabolic arcs, exponential decay, and so on. Ended up giving up some things that would have required finding cubic roots of bezier curves because my math wasn't good enough.
But apart from that, I haven't used any serious math in a long time.
So, it depends... I think the more you rely on interacting or emulating "the real world", the more important math is.
I was making up a calc 2 midterm that I had re-scheduled. Note that I was also going for Computer Science. Half way through, another student in a Calc 1 class had come to discuss her grade on their midterm. She didn't understand why she had to take Calc, because 'its not like I am ever going to use it again', the Professor simply stated that 'It is not that you are never going to use it again, but more if you can't pass calc, then most likely you wouldn't pass the upper levels of your department'. Its one way to weed out the slackers from those who will work for what they want.
Basically its not so much that your never going to use it again, but more that calc makes you look at problems in different lights\views. To not just look at it one way and assume that it will always be that way. Just like with any algorithms class, it will teach you to look at different ways to code the same thing, to either save time, space, or both.
There are two answers to this:
First, it may not be *necessary* to use math in programming, but if you know math, you will often see connections between to programming tasks; and this will make it easier for you to conceptualize and implement the tasks; and to make them more efficient.
Second, whether or not you use math, the act of learning math -- practicing building up abstract structures in your brain -- will help with tasks like programming.
Learning math is like adding an extra tool to your toolbox.
You may never need to use it, but one day, you may come across a problem which you cannot solve or understand, unless you have that tool in your toolbox. You may need to dust off the tool a little, but it is still there, and you can use it.
Personally, I ran into a few instances in business where I had to answer some seemingly basic questions. And without a background in Calculus, I would have never been able to understand it, or to see a more elegant solution.
For example, a coworker shared a problem with me once. If a customer adopts our software product across their enterprise, how long will it take for the customer to get their return on investment (ROI)? This is useful as a sales tool to help convince customers to invest in our product to help make their business more efficient.
This was a problem that I solved using Excel. But I had to use brute-force to solve it, and I created over 1000 lines of formulas to find my answer. Not very elegant, but it worked.
However, I noticed a pattern in the Excel formulas. And the only reason, was because it seemed similar to a math problem I studied in Calculus II, about Series and Sequences.
I found my old Calculus book from college, dusted it off, and re-studied Series and Sequences. Then, I was able to create a solution to my problem using a simplified math formula. Success!!
Next, I plugged in my new math formula into Excel. Now, I was able to solve my problem and model it across different variables. I could modify each variable independently to identify when the customer would achieve their ROI, based on different circumstances.
So, you may not always use Calculus everyday, but one day, it will be a life-saver. And you get to be the hero for your team.
The point of high-level math and physics classes is not because you "need" them in your job as a programmer. It's a way to limit how many CSE degrees are granted. I was told this straight-up by my college advisor ...
Then like some advisors he is a dumb-a**. I've been offered some pretty crappy advice and insight from advisors, don't take what they say too seriously.
You are basically getting into the trade school vs university argument. A trade school can produce as good a programmer as a university. The point of the university is to provide a more well rounded education so that a person has more options.
I too had some chemistry, physics and years of math that appeared to serve no purpose other than to "weed out" people from the program. However to my surprise I once had the opportunity to participate in a project that would port some chemistry software from mainframes to PCs. I would be interacting with world class polymer chemists. They did not expect me to be a chemist but they did expect me to be scientifically and mathematically literate. The general ed chemistry and physics and the years of math for computer science actually turned out to be useful.
It's important to use calculus at every opportunity. It differentiates one from the integral lump that is hoi polloi.
If you have, or want to have, a curious and creative mind moving forward in life and hope to build systems of any kind, either virtual in software or by designing or physically constructing things in hardware, don't pass on math classes. Some of the details you will forget or not need, and other details will prove useful, but don't forego collecting tools just because you can't predict exactly which ones you'll need in the future.
You could probably perform most of the work that would be required of a mid level programmer, possibly even a computer engineer, with the math you already know. But you'll never be very good without advanced topics like calculus, linear algebra, and diff-eq. If you're seriously considering a technical career, I can't recommend strongly enough that you take these courses and put in the effort to really truly learn the material: not just enough to pass the courses, but for the long term. I've been an engineer for about 6 years and I'm constantly finding myself wishing I knew more math, even after having taken all the required engineering math classes and a few additional math classes in both undergrad and grad school.
The various fields of mathematics are like tools to hang on your belt: right now you probably have something along the lines of a hammer, a screwdriver, and a hacksaw. Yes, you can do most of what will be required of you with those, but it's not going to be easy. Why limit yourself? Take the advanced courses and you'll start acquiring skills more analogous to power tools. Honestly, you really can't imagine the kinds of problems you'll actually be faced with in a technical profession until you're actually in one, so it's not surprising if it seems right now like you don't need any more math. For instance, if you're thinking about game design, do you know how ray tracing works? Do you know what quaternions are? Can you do matrix operations for 3-D movement? No, you may not use those things everyday as a game designer, but you'll be at the bottom of your field if you can't at least understand them.
Besides, never mind the actual merit of these topics: you'll never land a half-way decent tech job if you go into an interview and let it slip that you don't know math beyond first year calculus, let alone high school. Unless of course you're planning to go into IT. If that's the case then never mind all of this.
Career aside, there will be a lot of topics that you'll likely find interesting later in your life---when your brain isn't so squishy---that will be out of reach without the additional mathematical background that you're currently lacking.
Slashdot is not a game, Slashdot is not a game. Crap, I just lost points.
Honestly, you won't *need* to use anything beyond arithmetic if you don't want to as a programmer...
That said, if you want to make something that hasn't been done before, or improve upon existing methods to do some particular task, or basically be a GOOD programmer, you'll NEED to know higher level math.
I know people will argue you don't need higher level math to be a good programmer, but seriously, take an objective look at it. If you aren't capable of writing all the packages/plugins/libraries/etc. that you end up using in your code yourself, you're simply not a good programmer... Now that doesn't mean you shouldn't use packages/plugins/libs/etc.... Really unless you *MUST* write it yourself (due to licensing issues or whatever), then it makes no sense not to use them. But if you can't write something that's necessary to a project you code, then you can't claim to be a good programmer...
I do web application development, which arguably has nothing to do with actual mathematics. But the training I got my taking a programming degree with a heavy mathematics emphasis has been invaluable. Learning algebra, specifically advanced algebra, has helped me understand more intuitively concepts such as pass-by-reference and variable assignment; studying Fourier transforms gave me a grounding for function pointer/delegate methods; studying ring and field theory helped me understand what overloading operators could be like and what power it could yield; studying graph theory helped me think through my problems and to think about explaining algorithms and thinking about recursion.
In general, math helps you think logically, and my background has also helped me think efficiently, and to seek the most efficient answer. Math wasn't necessary, but has immensely helped me be a strong, better programmer.
I do bioinformatics, and I use a lot of math, though it's mostly linear algebra and statistics (not so much calculus). For designing games, etc, you can probably *get by* without much math, but there are lots of great possibilities that will require it, depending on the type of game and your methods for implementing it. I could, for example, see a lot of future games handling tons of data, especially if there are lots of users participating at once. And, if you want players to be interacting with a somewhat intelligent opponent/world/interface, you may want your game to have some ability to learn. That will all involve stats, linear algebra, machine learning, etc. If you just want Mario and Luigi to bounce around and stomp on automatons, then sure, all you need is trig and some basic physics, but why limit yourself from the get-go?
Namely vector, matrix and quaternion maths mixed with a healthy dose of trigonometry. Most scene graphs and engines will help you out, but then one day you need more than what your engine provides and then you may have to delve even deeper into the world of maths.
Custom lighting? Need to find the centre of mass of your custom procedural object?
Doing a local to world transform? World to local? Then you even have calculation of matrix inverses. While your library will do it for you, at least have the knowledge to know why it may fail.
If you want to do 3d graphics, know your maths, it will save you grief and get you further, quicker.
I write various amounts of graphics, signal processing and audio software and I'm always using maths.
I often use pages and pages of paper just solving equations before I code them - for things like radar I start with the basic physics equations and solve them and then code the solution. Sometimes the code does the hard work for me (as in a lot of DSP: it's all FFT's and averaging over time).
Even the simple Passive Infra Red detector in the corner of your room used for your home alarm requires quite a bit a maths for it to work properly.
The language and platform are irrelevant as well - I've done FFT's in C# on PC's and on small microcontrollers (using C).
You can write lots of software without maths but having maths under your belt means you can do a lot more!
If you examine modern papers on realistic graphics you'll see there are simple integrals that need to be solved, eg:
http://hal.archives-ouvertes.fr/inria-00288758
Bruneton, E, Neyret, F (2008), Precomputed Atmospheric Scattering, Computer Graphics -New York- Association for Computing Machinery- Forum 27, 4 (2008) 1079-1086
By understanding more advanced mathematics you will have more advanced options for solving problems, eg. vector cross product for finding an axis to rotate about, or quaternions for a less intuitive way of doing the same, or differential equations for understanding the mechanics or aerodyamics of your game/ragdolls, statistics for understanding why the investment portfolio you are looking at is cleverly masking the reality of the situation. Or Linear Algebra for solving spatial and AI problems iteratively (the way a scientist would optimize, rather than the discrete way a computer scientist would first approach it). The more advanced mathematics you have the more tools you have at your disposal for solving any problem. Just because most people in today's society have a very tenuous grasp on how nature and artificial systems work dosn't mean that you ought to join them - (applied) mathematics is the tool that you use to gain understanding and solve real problems.
I tend to use math most days. Estimation, ballpark figures, cost per ounce etc and I no longer work in the computer industry. Now that being said, is there justification for higher level mathematics in computer programming.
Well, yes and no. The typical programmer isn't working on anything complex, just providing a bunch of criteria for a switch statement or copying information from one location to another, not a big deal, but when you start working with algorithms, not to be confused with (Al Gore)ithms an understanding of upper level mathematics can certainly help. Discrete mathematics is a no brainer since it focuses on logic and proofs which can help a programmer find edge cases and cut down on errors via the processes you learn in discrete mathematics.
Calculus and other higher math is generally useful in making algorithms run more efficiently. Brute force searching algorithms take a lot of time, binary is significantly faster, but using calculus can even improve on the binary search methods in the right circumstances. The thing is, if you don't have the knowledge about high level techniques you cannot use them. For instance, if you don't know sorting routines a bubble sort seems incredibly fast in comparison to sequel sorting however without the knowledge of sorting algorithms you wouldn't realize how ineffective bubble sort is in comparison to say merge sort.
Most programming isn't focused on efficiency and most things can be brute forced within a reasonable timeframe with modern computer systems, however, knowledge of calculus and other higher level mathematics can help quite a bit as techniques can be transferred into computer programs that need them.
I guess you could make the same comparison to electronics, does a programmer really need to know electronics, diodes, resistors, refresh rates and protocols to make a computer do something useful? Probably not, but if you do know those things it can make you far more efficient and effective than the person who does not know them depending on what type of programming you are doing. Whereas most systems are built requiring basic skills or specific study of one area, higher level mathematics provide tools that can be used in a wide range of applications and tend not to be limited to specific cases. With the knowledge of upper level mathematics, when you do run into situations where it can be used, you can pull out a book or do a search to find an efficient algorithm whereas when you don't have the knowledge you'll end up spending a lot of time re-inventing the wheel.
/* TODO: Spawn child process, interest child in technology, have child write a new sig */
I used to be a professional Playstation 2 programmer. Linear algebra is crucial for understanding the 3D matrix transformations heavily used in most games. Understanding at least basic calculus is necessary for programming realistic looking game physics. You can probably get away without knowing how to solve differential equations, though.
I've gone through degrees in both computer science and math (and am now going for my math PhD), and I've found that all of the really *cool* things you do with programming require some level of mathematical analysis. A lot of people are psyched about data science these days, but many are also calling shenanigans on those who don't have an understanding of the methods, and just push the buttons like it's magic.
The truth is, all of the things that drive common imagination like "self-driving cars" and "computers tracking serial killers" and "simulating" any kind of real world phenomenon, all of these rest on the shoulders of some heavy mathematics.
Shamelessly, I suppose it's relevant to share my blog called Math Programming, where I investigate the cool places where math makes for awesome programs, and vice versa. I'm about to start a big series on machine learning.
http://jeremykun.wordpress.com/
I work in IT but I'm not a programmer. I use math all the time. Mainly for work I use advanced statistics (which requires calculus) for capacity analysis. The other day I had to use a gamma function.
Math education provides a toolbox. I have tools that I can apply to my work that my coworkers don't have and in many cases didn't even know existed.
People who question the value of math education usually do so because they are ignorant of its broad utility. I assure you that the more math you know, the more opportunities you will see where it can be applied to do something useful for you.
-- Yes, improper accounting of the classes I had taken led to a high-school counselor telling me I needed nearly remedial math when I was a freshman in high school (note that it wasn't grades, it was simply a counselor looking at checkmarks, seeing one not checked and ending her assessment of my needs right then and there). So yes, I believe that counselors do retarded things with math requirements and matching students to them.
-- As a result of this stupid counselor (they're all stupid), I didn't even start trigonometry/calculus until college.
-- It turns out I really liked calculus and did extremely well once in those classes.
-- I ended up majoring in and completing 2 degrees in Physics.
-- I still don't use much complex math on a day-to-day basis. HOWEVER, it does save my bacon from time to time, and I enjoy being able to setup solutions for problems.
I swear they give me mod points to shut me up.
I think what a lot of kids miss these days in school is the fact that K-12 isn't preparing you for one particular career. The idea is to give you a rounded education that you can use to pursue any career in college. So many people are still in first or second year of college before they decide on a major, and I know dozens of people working in fields now that have nothing to do with their college degree. My advice would be to learn all you can, you never know when it will come in handy later in life.
As a new product developer, I use math regularly. Most commonly I have used discrete, set, and stochastic maths. I am glad for the intellectual investments I've made in learning math.
Advice: if nothing else, you should ensure you are able to review and understand the academic presentations of solutions and methods or else you will have excellent solutions that you will not be able to take advantage of. Mathematical theories often describe the "shape" of problems and the factors involved with them as well as the challenges and limits you'll encounter. Without mathematics, you will reduce the top-end of what you can do and reduce your productivity at work. Few can identify it but you will cost massive amounts more for the businesses that hire you. On top of your greater cost, you will have to deal with more of the distracting and non-essential coding that composes the (in my opinion) more boring aspects of the field. Meanwhile, you will move more slowly than the rest of the market and loose any advantage you may have over time.
More personally, studying mathematics you will open up types of thinking and give yourself perspectives you might not otherwise have available. Even if your day to day doesn't require mathematics, you will be better positioned in life if you expend the effort to at least get a cursory understanding.
Even though calc is relatively standard in most technical undergrad degrees, from personal experience I'd argue that linear algebra and some statistics would be more useful for most people. I'm a few years out from my math program but I still occasionally have coworkers ask me to do certain jobs just because it will be a refresher for me whereas it'll be brand spankin' new application for someone else.
Hi there!
In my case, I continued to use lots of fun math every 12-18 months or so throughout my career. I started doing embedded systems, then moved over to compilers for a couple of years, then back to embedded, system management, scalable systems/networks, and such. Lots of great opportunities for fun math beyond simple arithmetic. In my current project we're working with the scientists at SRI on some cool predictive model stuff that requires understanding math for sample analysis and prediction. Them guys are better at science and math than me and my team, we're better at programming (Java, Scala, Python)... we both grow intellectually and professionally. Last year around this time I was working on neural networks and epidemiology models for analyzing social patterns data. Fun times.
If you go into areas like Big Data analysis, especially if you go toward large social network/epidemic spread analysis, or high frequency trading, or other forms of trend analysis, you'll get plenty of chances to exercise your math muscles with things that you'll learn in calculus, analytic geometry, statistics and probability, and/or differential equations. These gigs (whether as an employee or as a consultant) are also very well paid because you won't be just "coding" and calling APIs blindly. For example, fraud detection is a huge area for people processing lots of credit card transactions -- whether they are the creditor bank or the bank's client. Lots of fun theorems apply (e.g. for something simple to grasp but with profound implications take a look at Benford's Law).
Games... from what I know about the industry, lots of vector calculus, fractals... fun times.
Spend some time learning R programming (it's fun, frustrating, and very, very useful). R gives you a rich tool set for math and graphics that will blow your colleagues or client's mind away if you know how to apply it combined with good, solid math knowledge. Think of it as awk for math instead of text. With a couple of lines of code typed in 30-60 seconds you can analyze a table with tens of columns and thousands of rows, and generate fantastic plots/charts; such thing would blow an Excel expert's mind because the same work would take at least 30 minutes and it'll look like pure magic to him.
Think about it like this: the more you know, the more areas where you'll be able to apply your knowledge. All the guys I know who learned the math and who can apply it are always in demand (recession proof!).
Disclaimer: computer engineer here, not a math major or actuary (nor was I interested ever in being one). As an engineer, I know how to *apply* the math, don't care much about theorems and proofs. When I'm not architecting systems/working on interesting aspects of some project, I'm doing boring stuff like business development and managing development teams. That's pretty boring, though -- having tech + math knowledge helps me move on to interesting stuff quickly when needed.
Good luck in your quest, and I hope that you get a chance to learn and apply math that you find interesting and fun!
E
http://eugeneciurana.com | http://ciurana.eu
I agree with what everyone has said here. You don't need to know advanced math, but it may help you write more efficient programs.
I make business web applications. The bulk of the work is shuffling data in and out of the database and displaying it. Calculations are mainly string comparisons, sorting, and filtering. When math does come into play, it's usually addition ($i++), subtraction ($i--), or multiplication ($interval = 365 * 24 * 60 * 60). And as you can see, you're hardly even doing math. I don't actually do the multiplication, I just need to be able to type it out.
The most advanced math I've done is the use of the modulo operator. I didn't even learn that in school, but it pops up in programming.
Coincidentally, today I used math to figure out just how big the namespace is. If you restricted yourself to just lower-case letters, and 25 characters or less, that's 6 undecillion possible names (26^25). Granted, most of them are of limited use, like xkkxxkl, but it sure makes me worry a little less about name collisions.
Even so, all this talk about math makes me hungry to learn it. I really can't remember anything from my calculus class in college, and this discussion makes me want to pick up a book on the subject. I'm sure it would make me a better programmer just by stretching my mind a little.
*cough*
That's the title they put on the business cards they insisted I have in the US, not even legal in Canada to say that without an actual engineering degree. I was in the faculty of Mathematics at Waterloo, because that's where the computer science department was and I wanted to be where the watfor/watfiv/apl people were, they'd bussed us from high school a few times to play with that stuff for a day there, much better than the ibm 1130 we had.
I'd say you need up to and including a year or two of calculus. And probably some physics. 80% of programming won't require this, but cubic splines, integrals, differentials, trig, queuing theory pops up in places if you're doing systems, embedded, graphics, robotics anything fun will need some math.
Having said that, as a programmer you translate somebody else needs into code and it doesn't matter if it's a uart chip or a complex mathematical formula or model, they'll explain it to you so you can implement it, really you're just translating those steps into cpu steps and at least with math there's a nice flow there, it's a joy to implement.
So, it's nice to have but as long as you can think it's not an absolute requirement. And other than this and very simple Bezier splines that's about all the math I've ever run into and I've pretty much done everything.
Need Mercedes parts ?
If you don't know mathematics then someone will take advantage of you in life. Look at that cocksucker obama and most of the Congress. None of them know mathematics and they keep trying to sell communism to America. It will eventually work since our public schools are in the shitter!!!
Lol. No, you don't. An asteroids "spaceship" (and the asteroids, etc.) can be represented as just a cartesian point, more typically several in fixed relation to one another. Its motion is addition of a fixed XY amount to the XY point(s) per time frame. Its drawing direction can be represented by anything from a list of hand-drawn images indexed by a "turn" variable (sprites) and a similarly hand-coded table of XY values to give the "bullet" and the "rocket" their directions, to straight up sin/cos rotation by theta (vectors.) Bullets work just like the spaceship, only faster. Collision detection can be as simple as subtraction -- you don't even need a linear result -- and you certainly don't have to go full monty on line intersection. Even adding complexities such as other attractors is simply a matter of adding other accelerations -- IOW, XY addition -- to the point with the (barely worth mentioning) added step of considering the distance from the attractor. You hardly have to know *any* math to pull all this off. Can you *describe* this in higher math? Sure. Do you *need* to? Definitely not. Finally, should you? Also probably not. In fact, if you do, it probably simply demonstrates you know math pretty well, but you're a crappy programmer.
My math is pretty good. But I *started* programming without it, and because I learned most of my higher math later, I can tell you that a lot of 'higher" solutions to some types of problems -- like asteroids -- aren't the best ones. I do agree that the more math you know, the stronger your programming will get -- absolutely. But sometimes it's because you know what *not* to do. Perhaps when CPUs get to the point where everything comes back to you in one clock cycle (and hyperthreads have as much FPU access as normal threads), we'll have more degrees of freedom, but as long as the time taken matters and heavier math consumes more resources, ad hoc, highly tailored solutions are going to still be very serious contenders. This goes for PCB routing, a lot of game logic, audio processing, graphics in general from ray tracing to 2D image processing and so on.
Look at the motion of your arm, with the shoulder and the elbow and the wrist. You might like to describe that using higher math, the attraction is that you can boil it down to some fairly minimal terminology. But you can use your arm without knowing any of that; and in fact, you can create, control and position an arm to target (simulated or robotic) using the most trivial of grade school math. And such a solution is likely to take a lot fewer clock cycles.
Then there's fuzzy logic. The math behind? Interesting. Unusual. Brilliant, even. But the implementation? Trivial.
There are just a few very small, very simple areas of math that I find recurring across a wide variety of programming tasks I've worked on over the last fifty years, and those are truly the golden nuggets. For instance, the power of representing various things as [0.0...1.0] is vastly underused by novice programmers, and even good ones -- if they don't see why it's a killer technique. Once you "get it"... you'll do it just about all the time.
The rest... sometimes useful, mostly not. But you need to know that.
I've taught at a top-N UK University (where N is an integer less than 10 dependent on the kickbacks to the league table makers that year), specifically teaching first year students the maths they will need to understand the course. There is a stark and shocking divide between those who did maths in their A-levels (16-18) and those that didn't. Those that didn't find their first year very tough and are (with a few exceptions) limited to taking the business and psychology courses for the rest of their degree. Most of them also never learn to program very well.
Now, you might rightly ask about correlation vs. causation. My theory is that the value of mathematics is two-fold. First, it is the language in which much computing is written, without sufficient mathematical background there are huge numbers of areas that you will not be able to understand. Second, it teaches abstract and rigorous thinking, if you don't see why that's important then have a think about the question "What is a program?". Thus students who do not have this, either by inclination or (lack of) training suffer.
So, to answer your question, sure, you can program without maths. You can make a living working in IT without maths, many people do. However, if you want to design, create, invent or innovate then maths, if not vital, is one of the best ways of building the skills you need.
And you'll need to understand calculus.
One of the fields where mathematics have definitely intersected with all types of serious programming is runtime analysis of algorithms and programs.
I know that computers today are magnitudes faster than the early days and that most western households have more computing power in their house than was available in the whole world some fifty years ago, but the problems we try to solve have grown even further and yet we expect the response times to be reasonable for everything we want to do.
One problem that just came to mind is navigation: That little box on the windscreen is actually searching through millions of roads to find the optimum route between two points and still we expect it to take less than a minute.
I'm mostly responding to this comment because it has one of my main points.
Computer Science uses several types of math. Logic and discrete math are the fundamental concepts at the core of CS. They are the reason CS is so often found as a degree offered by collegiate Mathematics departments.
Computer science also heavily depends on linear algebra and (mathematical) statistics, the latter of which depends on calculus. Big data is one of the big up-and-coming fields within CS. To understand it, you'll need to understand statistics as well as various machine learning concepts. This involves information retrieval, probability theory, and a number of other advanced mathematical subjects.
The problem is that universities consider calculus to be the end of the math requirements. My CS major required Discrete Math, Symbolic Logic (an attempt at logic and set theory), Calculus 2, Physics 2, EE 1, Probability, and Linear Algebra. It should have introduced new advanced courses and required them, e.g. Discrete Logic 3 (Discrete Math + Symbolic Logic), Calc 1, Probability, Statistics 1, Linear Algebra 1, plus any two electives that require one of those (e.g. Stats 2, Machine Learning, Calc 2, Linear Algebra 2).
Because so many programmers suck at math, many employers will take an applicant with a Math degree (ideally dual-major CS/Math) over a slightly more qualified general programmer with just a CS degree. This is because the CS major is less likely to be able to grasp at advanced mathematical concepts inherent in advanced algorithms, optimizations, etc. It also follows the stereotype of math being "harder."
When I interview candidates on technical prowess, the code portion is just having them tell me what something does. I then give them math problems. When I started doing this, I was surprised at how much the applicants struggled; my current questions start far simpler before winning the harder question (which is about Bayes theory, taken from An Intuitive Explanation of Bayes' Theorem).
(Full disclosure: I do not have a math degree. This is in part because I was not at all interested in taking any more calculus.)
Use my userscript to add story images to Slashdot. There's no going back.
I've found that each higher level of maths I studied made me much better at the previous level.
So algebra made me better at arithmetic. I now saw numbers as systems and modules, and I could pull them apart and put them back together, all in my head. Likewise, high-school calculus, stats, trig made me better at algebra. But because I didn't follow maths after high-school, I'm much less comfortable with the highest maths I studied. But I'm sure, had I gone on to more advanced calculus, etc, then I'd be using basic calculus much more often, to quickly solve problems I now have to grind through (and still aren't sure I didn't screw up.)
I assume the same is true in other areas. Learning basic coding probably taught me more about everyday computing than it taught me about coding.
Science is all about firing a drunk pig out of a cannon just to see what happens.
Yes, you absolutely can get along programming without the advanced stuff. You know, counting the beans and so forth as several folks have pointed out. However, if you _ever_ want to get more serious and up your game there is a good chance you'd be stopped by the simple fact that you don't know advanced math and its too late to study. Let's say you have a clustered database of 64 nodes. Your query result will be distributed between them with equal probability. How many records do you need to fetch from each of the nodes to bring the probability of not being able to assemble the top 100 _aggregate_ results adequately below .001? How does the size of your connection pool impact your SLA given a (non-uniform) distribution of user requests per second and DB response times? So you have collected a bunch of data based on the behavior of your complex system. What function does it (roughly) fit and what does that tell you? All questions I've practically had to solve and all of them take non-trivial combinatorics, calculus, statistics and probability theory to solve. You want to assume your career will never depend on these things and that you'll never want to take it a step higher? You absolutely sure?
When somebody tells you you need to know something, study without questioning if by any means possible. If they turn out to be wrong, then you are a more knowledgeable person. If they turn out to be right, you are a more knowledgeable person and a better fit for the job!
Some of the coolest apps/jobs are in the gaps between fields. Think aerospace, robotics, advanced sensors, etc. If physics or engineering interest you get comfortable with calculus in at least 4 dimensions, upside down and under stress.
I've been told by teachers and parents that math classes are a must for any technology related career.
You already got your answer. What makes you doubt them?
Some math you'll never need again, some you'll wish you learnt more about. Trouble is that you don't know beforehand which. But you will need math in any tech career.
Assorted stuff I do sometimes: Lemuria.org
But you need the basics.
In my entire career, I think I've only used math once that I hadn't learned in high school (differential equations for a fluid flow simulator).
I've used algebra, matrices, geometry, and trigonometry on a pretty regular basis for the bulk of my career. A lot of that career included computer graphics, which uses matrices and trigonometry heavily.
One of me uses math. The rest use maths.
Example one:
Your backup library has a certain number of drives of a certain maximum throughput. Your backup software divides up the data set into a number of jobs equal to the number of drives, and assigns each job to a drive. But the software can only start one job at a time, so on a graph of collective throughput per unit time, you see the total throughput ramp up to maximum drives, then ramp back down as each individual job finishes. The graph represents collective throughput at a particular time. (Say, in Mbytes/second.) The steepness of the curve represents how fast drives can get online, increasing the collective throughput (Mbytes/second/second) (You can observe empirically that the curve falls off with the same slope as individual jobs complete, which makes sense if the jobs are roughly the same size.) The area under the curve represents the amount of data in the data set. (Mbytes.) Thus function, derivative of function, and integral of function.
Immediately, you can see that the area under the curve for a particular data set size will remain constant, as the size of the data set is fixed. You can change the shape of the curve, which also changes the end time, by improving the rate at which drives can come online. You can also postulate that given a certain rate at which drives come online, and a given drive throughput, there is a maximum number of drives that are practical for a given data set.
The purpose of this analysis (math left as an exercise to the student) was to convince engineers that the best tactic to solving slow performance was in improving the task management part of the backup software, and that given the current conditions, more hardware wouldn't help.
Example two:
A very large, very complex installation is significantly less reliable than than it should be.
The vendor says, each component has an MTBF of thousands of hours, therefore we shouldn't see the failure rate we've been seeing. (Which was in tens of hours.) But assuming every component has to be online to complete the job, and that a failure of any component causes the job to fail, the MTBF of the system is considerably less than the MTBF of a given individual component. Given the monstrous length of the jobs and tremendous number of components, it could be demonstrated mathematically that on average, one job in three would fail. The solution was to redesign the system with "hot spare" components and changes to software to take advantage of them, so that it would take several component failures to cause a job failure. The reason this had not been done previously was the perception that a component MTBF in thousands of hours made the issue of component failure unimportant. (They were also wildly optimistic on component duty cycle, but that's another story.)
The difference between knowing math and not knowing math is (in my opinion) the difference between being an engineer, able to solve problems, take measurements, understand what one is seeing, and draw conclusions, and being a technician, doing basic triage and following rote procedures written by someone else (probably an engineer). If you have engineering aptitude, you may be able to get by without math the same way a carpenter can build a house without knowing how to use a hammer. Mostly, he gets someone else to do the hammering for him.
Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
Day to day use of higher-level math? Not really. But the course work challenged me, taught me to think, prioritize and problem solve. The same can be said about a lot of my college course work at GA Tech.
Find a mathematician to do the dirty job (writing the required algorithm), have him/her explain it to you and claim you did it by yourself searching on Google. So you will get "both the money AND the yayo" and you will see the angered faces of engineers whit tons of qualifications but not a clue about how you managed to do it so quickly
if free market is supposed to be able to solve every problem, why do i still need to scratch my balls?
I'm an electrical engineer who works mostly writing software for communications equipment. Most of the math I use isn't as complicated as coding calculus algorithms, but having taken courses in discreet math (meaning the mathematics of logic and boolean algebra, not discreet-time math for signal processing), multi-variable calculus, statistics, probability theory, linear algebra, differential equations, and electromagnetics, I think math is essential to good programming. Not that you will use the math itself, but you will have learned how to approach problems and solve them efficiently, simply, and accurately. Taking math courses will help you develop critical thinking skills, which will make you a better programmer.
To program like a Jedi, one must be able to think logically like the way you drink water. Thats really what all that math enforces.
tonyaldo.com
I am a teacher , It is not about actually doing mathematical operations.
You studied math and solve operation at schools because in such a way you develop
skills, abilities and attitudes that help you in a deeper understanding of what you are actually doing.
Without you math courses many people wouldn't have the necessary skills, the spatial thought,
the patience, the method the structure and order of doing "something"
If you are interested in math, go for it. Math rules. Don't worry about it. Follow your interest.
I thought I'd remembered most of my calculus and algebra until I was faced with solving a rather straightforward geometry problem.
Given a bounding rectangle, I needed to find out where a ray extending from the center intersected an ellipse (defined by the rectangle) at a given angle.
If the X and Y dimensions are equal (the rectangle is a square and the ellipse is a circle) that was pretty easy.
Trying to do the same for a non-circular ellipse, I got stumped and had to ask a friend (who, quite conveniently, is a math prof).
It was a bit embarrassing and it cost me considerable time.
I invested in some reference books for insurance against future brain farts of a similar nature.
A friend of mine came to me with a problem. His grandparents' TV just went out, and they need to buy a new one for their enclosed media center. It was an old non-widescreen TV, and pretty much anything you can buy now is widescreen. Given that the old TV was 20 inches, what size TV do they order that will fit in the cabinet? I'll even give you, the ratio of width to height for old TVs was 4:3, and the ratio of width to height of widescreen TVs is 16:9. (Some allowance has to be made for the bezel as well.) TV size is measured diagonally.
I solved it for him (elementary trigonometry) but I think his grandparents ended up going to the store with a tape measure. That works too, I guess.
Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
Learning math teaches you to think. It is very worthwhile.
Facts take all of the premium out of arm waving - T. Reynolds
Maybe if you're a game programmer or working for DARPA, you might need somthing other than the basic stuff taught in 1950's high school, but I worked in the computer industry for many years and really don't remember needing other than very ordinary arithmetic.
I killed da wabbit -Elmer Fudd
I think the question you should really be is what kind of programmer do you want to be? Do you want to be a typical programmer, writing things like standard line of business apps, or do you want be doing things beyond that? Yes, you don't need advanced math to do typical programming, but I personally didn't want to be a typical programmer.
To be successful at the highest levels, a deep understanding of math is very helpful and often required. You may not actually have to solve an integral, but the problem solving you acquire studding calculus is critical . Furthermore, actually understanding statistics, or what the area under the curve, for instance, or the second derivative means in real life situations is what can separate you from a "typical" programmer as a more elite programmer. Similarly probably most "typical" programmers don't have a strong grasp of algorithms (like what you lean in an analysis of algorithms class), but great ones will have solid algorithms skills.
By the way, you have your whole life to work and do programming. Does it really take that much time to learn things well and take a few math classes and get a real CS degree? It isn't that much more effort compared to a lifetime. I won't hire anyone who can't be bothered.
So, yes you can be typical, and not understand higher math. You can even program without really knowing algorithms, but you are really lowering the ceiling of what you can achieve. Before someone jumps in saying I achieved this great thing X without formally leaning math etc., it is possible to learn on your own nonformally, but you still must lean and know these basics regardless.
Don't be lazy. Take the time and learn things like math correctly.
I believe that every program that crashes was made by someone who said "I want to stop learning." If you can't handle logical classes like math, Computer Science may not be the correct path for you. So, consider switching to some other field. Perhaps 3D modeling, if you still want to work on games. The world has enough shitty programmers.
I am a senior systems/performance developer/engineer for a tier-one mobile phone manufacture. Previously, I was principal software engineer for a major semiconductor equipment and manufacturing software provider and consultant to major semiconductor, disc drive, and LCD manufactures.Yes, many programming tasks can be done without higher level math, although formal logic is, in my opinon, an a-priori (necessary) requirement for serious software development. However, most really interesting software problems also require higher math (calculus, differential equations, statistics). Without calculus, I would not have been qualified for a previous position developing risk analysis software for the options trading industry in Chicago. Without calculus, I would not be qualified for my current position as senior performance engineer as we need to apply higher math to problems of predictive analytics in order to best manage our large-scale world-wide data centers that support 50-200 million users.
That said, our organization won't hire anyone who doesn't have good fundamental math skills, at least through 2nd year calculus.
Writing rudimentary code and being a computer scientist are completely different. Also not wanting to take math classes is one thing, but trying to say that computer science doesn't require math just so you don't have to take it is another. People always try to discredit 100 years of science and engineering because they don't want to take a calculus course.
We had a lot of guys in my computer science dept who didn't want to take math because they thought it was useless. They also didn't understand why we need to learn how to write documents. They said things like "i'm a computer scientist, not a mathematician," and so on.
Those guys are now working as glorified interns, some actually do data entry and help desk, and all these jobs that you don't want to do after paying for a college degree and working your ass off. I'm not bad mouthing those jobs, but generally when you get a degree in computer science, you don't aspire to those types of positions.
Regarding their personalities: They were generally afraid of failure, they were afraid of hard work and were generally afraid of having to learn on their own or ask questions when they don't understand. They just accepted defeat and barely made it through and would try to get out of or run away from anything the perceived to be hard.
Those are the people who make these arguments.
That being said, you will use mathematics every day of your life as a computer scientist or engineer. You will have to be able to solve recursive problems and provide linear solutions to other problems. It won't always be clear that what you're doing is mathematics, but you will be doing it. The biggest misconception is that mathematics is sitting down with a pencil and a paper and solving integrals that represent the area of a lake and whatever they have in your text book or other arbitrary problems.
I recommend you look up these books:
Gene Golub - Matrix Computations
then check out this book, which you WILL see in college. This is the defacto algorithms text book.
http://www.amazon.com/Introduction-Algorithms-Second-Edition-Thomas/dp/0262032937
You can find them both floating around in pdf on Google.
From there you can decide if you want to step into the computer science arena.
I took Calc and Linear in college. In over a decade as a software engineer I've never used them once. The few places I've been that required math required so much of it that they had people with master's and Ph.D's to take care of it. With that said I haven't used half of my CS courses either -- it's probably all worth learning anyway, just in case. And learning hard things is good for you.
Comment removed based on user account deletion
I work in finance, software development for trading firms. If I knew more math, especially math software, my value to the company I work for would be much higher.
I've been through calc 2 and some discrete math. I've used all the math I've ever learned at school; mostly developing for trading firms and doing some game development on the side.
I especially regret not taking college level statistics.
Had I stayed in my original development job, working for a commodities exchange, I don't think I would have ever needed any of the math I learned. Still, I would want to know all the math I already know and more because I have found it necessary to consume day to day information without being taken for a fool. If you know math you should be able to guess what a derivatives exchange is, and that alone can make a world of difference in being aware of the world around you.
As I said earlier, Dr. Hacker is a fraud. If you want to understand his real motives, listen to the audio interview with him.
He has an agenda, and this agenda is about increasing the number of people studying his subject in college settings and to do this he wants more people to stop studying algebra and other math and sciences.
He is interested in arguing in class for Obamacare and he wants to use statistics and no other math, and he wants this to be the environment for the young kids to learn in.
He is talking about indoctrination and dumbing down and at the end it's about money and power.
As a side note, the guy says that statistics should be taught to look at politician's claims (at school, to indoctrinate the kids) but statistics require algebra.
You can't handle the truth.
Even if you're not actively coding the various equations, the higher maths are essential in that they give you multiple ways to approach a problem, a greater understanding of the problem's nuances, and can serve as bits of inspiration. The same goes for sorting algorithms and data structures; it's very rare you'll use anything other than Quicksort, but having a knowledge of your options and how those options work can then be applied to other areas.
The better your understanding of the world, the more easily you can model parts of it...and the more efficient those models will be.
I'm going to beat your future professors to the punch on this...Development is more than just cranking code, something your school of choice will beat into your head over and over the first 2 years. Any monkey with at least some language skills and a weak grasp of workflow logic can code. To make a career of it, you need to go above than and become a developer, have to go into Computer Science [Theoretical], a specialized sub-field [Graphics, Scientific, Compiler/Language, etc] or Software Engineering [Practical]; monkeys that can't do anything but code are underpaid, overworked, treated as expendable, and are the McJob of the CS world. If you're looking for it when going for a major, most schools put SE as a concentration in the CS department, as it's a subset of Computer Science rather than wholly standalone.
Sitting down and tinkering works well when you're dealing with programs that are a couple hundred lines and nobody else will ever touch ever again, or when there's no consequences except time wasted to a reinstallation. Once you get into cooperative programming, projects that require maintenance, or large projects, it's a whole new ball game. You're going to need a solid grasp of design paradigms, compartmentalization, time management, documentation, and the like. You're going to need extensive knowledge of data structures to know when each is appropriate. If you want to become a team lead, you'll need all that plus a solid technical writing skills, a solid grasp of engineering concepts for everything from forethought and planning to making sure it all fits together to deciding on the most efficient course of action. You'll need a solid grasp on abstraction to lay out the build order in a way that minimizes dependency delays. You'll need people skills in a big way; no team will respect a stuttering boob that can't explain what they're supposed to be doing and hides...or flips...at the first sign of trouble.
And it's all stuff you're going to need fresh out of school, if you're going to compete in a market that's fairly saturated.
If you want to go into games...you need every math and science you can get your hands on and then some. Game balance is achieved through analyzing permutations, combinations, and statistics. Barebones physics is applied Calculus [acceleration, velocity, and position are derivatives/integrals of one another. Plotting in 3D brings vector math into the equation]. Rendering is a heavy application of matrices and the transformations thereof. Audio is all the study of waveforms, and control relies heavily on interpolation. Modern AI are state machines, which build very heavily on the fundamentals of CS theory. Game programming is one of the most demanding coding sub-disciplines out there.
I've done 2nd-year uni maths (multivariate and vector calculus), not that I remember any of it anymore ... In my 15 years as a software developer I've rarely needed any higher-level maths. What I have found is that my one first-year uni statistics course (which I paid very little attention to) has helped enormously.
Programmers often have large data sets they need to analyse and need to be able to understand trends, how to spot outliers, etc. If you're profiling or optimising, you need to understand the important of statistical sampling and error ranges.
Statistics is unbelievably boring as a subject. But it's actually useful and interesting when applied to real work.
The bulk of programming jobs have nothing at all to do with math beyond the high school level. Its mostly counting beans and keeping records.
There is the activity of programming or coding, and the activity of software design. Coding by itself requires little behind HS math. Development/engineering, on the other hand, requires the person to have good analytic skills. From choosing the right algorithm or data structure to composing good architectures, they all boil down to understanding convergent and divergent series, discrete mathematics and combinatorics. To get to those fields one needs to have a good grasps of limits (ergo, Calc I). Similarly, every once in a while one has to make some form of probabilistic analysis at some point or another (ergo stats and Calc II).
Knowing mathematics at the calculus level or above does not guarantee a person to be a good software developer. But not having good analytical skills almost guarantee the person will end up writing flat class hierarchies, architectures without layering, writing n-cartesian SQL queries, and loops that execute very expensive invariants.
The error I've seen the most with developers with poor analytic skills is an inability to infer behavior from looking at code. That is, they are completely incapable of doing P->Q inferences. Worse still, they seem to have problems doing divide-and-conquer approaches. They cannot look at one piece of code, they have to look at the whole thing. When testing, they test the whole system in one single shot as opposed to testing and observing behavior of smaller pieces. In other words, they cannot handle complexity. They simply bang it - code it, compile it, run it, don't like the output, change it again, on and on until it prints the "right" thing (or things get hidden under the carpet.)
YMMV, but that has been what I've seen since I started my career in software.
To put it baldly: If a student prepares himself with only enough skills for a career doing scut work, then he shouldn't be surprised when he winds up in a career doing only scut work.
Moreover, he can't even lift himself out of that because he doesn't have the skills to qualify for better opportunities when they come along. It is hard as hell to try and study while holding down a full time job.
It depends on what type of computer programming you do. I'm retired now, but most of the programs I wrote didn't require the use of much math; however, one application required integral calculus to determine the orbital angular position as a function of time for the Cassini spacecraft as it passed over an optical telescope at Table Mountain Observatory in Wrightwood, California on Earth as it did its "slingshot" around Earth in an Earth gravity assist maneuver to gain velocity on its eventual journey to Jupiter.
9/11 Eyewitnesses to Explosive WTC Demolition 1 of 2
But when you need it you are happy you've got it!
Speaking for myself, yes I use calculus. But I lean towards the EE side of computers. For the pure CS side, discrete math is very important. Followed by linear algebra and abstract algebra. Calculus, not so much. For game programming, I would prioritize it linear algebra, then discrete math, then calculus (for understanding game physics), then *maybe* abstract algebra. You may not use the math every day, but on the days when you *do* need it, the insight it gives you and the power of the tools gives you the "passing power" to solve in short order the kinds of problems that your colleagues will struggle with for weeks. It really depends on how you want to spend your life -- implementing other peoples' ideas, or deploying people to implement your ideas. If you desire the latter, get the toolbox inside your brain well-stocked.
Good grades on mathematics (not just the stuff you could do with a hand calculator if they'd only let you) show that you notice details and follow them up, you understand the difference between something that sounds true and something that can be shown to be true, and you can see the simple kernel of a complex problem. These are all hugely valuable traits for a programmer. In fact, without them I'd say (under my breath) that you're still playing with coloured wooden blocks.
That said, there are good programmers with relatively little mathematics in their education, but I think they would do well if they did take more of it.
Image Processing - my primary job function - relies on calculus, statistics, algebra, trig, geometry, matrix math, domain transforms, you name it. Look at any image processing function library and you will see functions heavy in math. We need developers with image processing experience and a strong math background is a requirement. This is the stuff that separates the men from the boys.
My job title is Measurements Engineer and you better believe that advanced math is a regular tool. Our company has the largest staff of PhDs, MSxx, and other degreed personnel in the country and math is the tool for solving problems.
Anybody who has ever developed a control system for large industrial format actuators has used an advanced math tool involving calculus. It's called PID - Proportional Integral Derivative - which is an essential tool to optimize latency between command and response and prevent destructive overshoots and oscillations.
Programming isn't all games and accounting.
Eternity: will that be smoking, or non-smoking? I Corinthians 6:9-10
If you don't already know it, you don't realize someone else does. Most people learn it back in school then promptly forget it. You can't measure how much people use things - those that remember it/learned it, will use it. Those that don't remember it will take twenty times as long (or their software will take twenty times as long) to do the same thing, and think "I don't need math."
excitingthingstodo.blogspot.com
For instance, most file formats for storing digital photographs, sound recordings and video clips are based on either the DCT or the DWT. Both these algorithms originate in Functional Analysis, a branch of mathematics that builds on the methods of Calculus.
Most users rely on existing libraries to parse and load multimedia files. However, someone wrote those libraries for you. And I'm quite sure those people knew a lot of math.
There are few things in CS that are new these days, definitively very few since the 80's. Pretty much all we tend to do is rehash the old stuff in a new package. I personally find that pretty boring. One of the questions that I asked myself when I was younger was: how can I be creative? For some reason that it was, and it still is, a very important question to me.
In a field where rehashing is the norm, how do you keep being creative?
You need to challenge all that is given, ask yourself: why do we do things like that? Who decided? When? Does it still hold true today? Can I do it differently? Would it be worth it? Many times we do what we do just because we have always been doing like that. Pure habit and resistance to think out of the box.
What do we need to think out of the box in a world of numbers? Math.
Without a deep understanding of the mathematical foundation of the methods and algorithms we use, there is no way of ever do anything creative in this field.
So, it is up to you: What kind of programmer you want to be?
I have used set theory to concisely describe SQL queries when the lonmg-form English description would have clouded the meaning to someone reading the comments about the SQL statement. It is amazingly easy to translate a query written in set notation into SQL and produce the expected result set.
In my daily life I use mathematics including vector calculations and even calculus while operating a motor vehicle, and basic arithmetic to manage my finances. I have a BA (Natural Sciences/Mathematics).
There has been a couple of times that I can recall over a couple of decades that I have needed higher level math. One was a linear programming problem for load balancing. The other was a queueing theory problem for how many connections a box could handle without dropping. Like a lot of tools, you probably will not need it often but when you do need it it is the only thing that will solve the problem. As I recall queueing theory classes are off limits to anyone that hasn't done Calc2.
Battery charge / discharge rate is not constant over the charge level of the battery. The percentage reported by the battery to the OS is just the voltage reading, which is not truly linear to the actual charge level.
If you had, you might have come up with an better solution than just the most naive one.
But because maths isn't important, the naive solution is the only possible and because that's the only possible solution, you conclude that maths aren't needed.
Sorry, but your horizon is simply not broad enough to imagine better, or maybe just different approaches.
When you design database schema, you need set theory, relations, cross product, etc. When you model and meta-model you need relations, sets, classes, rings and a lot of other math stuff you probably never had in a US high school. If you work on monitoring systems for performance or other properties, you need statistics, algebra, Markov chains, and more in that direction. You definitely need graph theory (to some degree). And for the software of the near future graph theory will become more important. When you analyse social networks, you need graph theory, set theory, and a lot to understand different types of filters. If you use logic, set theory is a logical choice. Also other concepts are required such as proof by induction and deduction.
You could say: computer science is a special section of applied mathematics.
If you model simulations, integral and differential equations are useful. When you develop domain-specific or other programming languages, APIs etc. you need formal languages, which require a lot of math as well. And actually when you are programming you use math as well, ypu just don't know it.
I won't go so far as to say that anyone who hasn't done advanced math *can't* be a good programmer, but I will say unequivocally that it's highly unlikely.
But more importantly, being a really good programmer absolutely requires that you be *curious* about algorithms. It's mind-boggling to me that anyone sufficiently curious about algorithms to be a good programmer would even *ask* the question "do I need all this math?". Who cares? Why don't you *want* to learn it?!?!? Hint: "Just for the joy of learning it" is the right answer.
I stopped when my teeth started to rot.
Oh wait. Math. Never mind.
game development [...] Unity3D and OGRE [...] but I've never had to use any math beyond trigonometry
If you want to keep going down the 3d graphics programming route, you must learn everything you can about 3d vector math. When I took the relevant courses, they were called "Linear Algebra" and "Calculus with Analytical Geometry". Various parts of calculus are prerequisite for understanding those topics. If you want to be a game physics programmer (whether for 2d or 3d games), then at a minimum you'll additionally want to learn Differential Equations.
By that point, you will have enough math knowledge and practical experience using it that you'll be able to determine for yourself whether you actually need to learn more, and specifically which topics.
If your content to use 3d packages like Unity, you can probably get by with little more than a strong understanding of matrix and vector math.
If you ever want to implement any of the following more directly, you need significantly more
3d Physics: requires calculus for certain ballistic calculations.
Low level rendering: requires knowing how to interpolate a normal value across mulitple verticies
collision vs true curved surface: if you want to use spline curves to represent geometry, you need to know how to calcuate an exact location on it to determine a collision normal.
Or what happens if you want to use a 3rd level plugin for Unity that only works with Quaternions and all you have are the Vector / matrix based positions?
You cannot always depend on an out of the box solution.
Think of it this way: You do not need to be an architect to build a house. Any idiot can hammer together some walls and a roof. If you want the damn thing to actually look good or do something no one else has done yet, you need more. Any idiot can buy a 'just add water' cake mix and make a chocolate cake. But the guy who can make one from the raw ingredients is probably going to make a much better goddamn cake.
Also, if it comes down to hiring an employee with high school level trig vs a guy with university level calculus, and the job involves working with those concepts even indirectly, than high school guy loses every goddamn time. Even if your not using it directly, your still going to be better off going with the guy who has a deeper understanding of what the hell is going on.
END COMMUNICATION
Yes I have a many points of my life used Calculus and Discrete and Dynamic and other types of math and related theories. Luckly I don't have to crunch the numbers (or show all the steps) like in university as I write programs to do that. I do use math in programming - manually figuring out things on paper and/or in excel and/or other programs. Often thing are complex at first - write a function to work with the problem to derive the answer - then reuse that function or modify it for similar problems. Short answer - you need to KNOW how to do calculus - you may or may not have to actually perform it like you did in highschool/collage/university and may never crunch it like that..... but when given a set of data - you know how to formulate the equation and when given the answer - you should UNDERSTAND if that is correct or out in left field and totally is wrong!
One: if you want to look at what divides high-powered innovation, look no farther than the ability for those who are designing systems to understand high-level mathematics. There are all kinds of solutions out there to be applied in creative ways, but the problem is often in how to even comprehend the information that exists out there (relatively) freely in academic papers and demonstrations. Two: if you wonder what use math is, you probably need more of it. The interesting part of a mathematics education is that it teaches you the respect of its application. I never understood just how important linear algebra is until I had to start playing with it. Now, I realize just how much of the massive data flood we wade through is filtered and explained through such powerful methods. I've got an extensive mathematics education in my engineering degree and I never have had a good reason to regret a minute of it (after the initial gnashing of teeth, of course).
I like losing arguments, it just means that I can take your point and make it my own.
I'm not sure about other game developers, but I had to teach myself calculus out of necessity. Working with Vectors and Matrices is calculus with a sprinkling of trigonometry and geometry.
Outside of programming, I keep a small pad of paper and a pencil with me at all times. I got through one pad of 40 sheets every 3 to 4 months and only really use it for calculating things. I tend to do a lot of varied work, and have never encountered a single line of work that didn't require at least basic algebra. The more advanced stuff I only really use in programming and electrical engineering. Honestly the mandatory math that I had to take is all I ever used in ordinary life despite trying to find ways to work in the fancier stuff from advanced forms of math.
It is the concepts of learning how to learn in mathematics that is so keen to any science. If an individual can't grasp basic calculus, they'll also fail in any advanced science. Most things you learn in school can't be directly applied to many professions, but that doesn't mean it was pointless to learn them. You become better and better at learning as one progresses through the sometimes tedious learning sessions.
I took a math major route before applying to computer science jobs. I would say the advantages are thus...
A MUCH stronger understanding of data structures.
Much more prepared to decipher and write algorithms.
Much more marketable to startups and places where IT is hired by those who are technical themselves.
So many abstract concepts in programming were originally rooted in mathematics.
Mathematics is more dense then code, dense code usually is laughably less dense then the math I did.
The theoretical portions of math are especially interesting to juxtapose against most programming practices.
There is this intangible sense that my programming perspective before my mathematics experience was just worse.
Disadvantages:
You're less prepared technology wise for what is out there if you don't also take a full CS degree, too. So you have to sell your ability to pick up on stuff in interviews.
Mathematics is *harder*. CS people will disagree, but it is true. (this could also be an advantage!)
Mathematics is less practical, and therefore much less rewarding until you develop a mindset that prioritizes actual knowledge over execution, which will later hurt you when actual execution once again becomes more important than knowledge in the business world.
Finally, I believe that there is only going to be more demand for programmers who can really really really go the final mile in abstracting everything. I can only see mathematics helping with this.
N
It is probably true that there are many programming jobs where you don't use the kind of advanced math you are talking about. However, there are some that do, and the kicker is those tend to be the most fun ones. Why limit yourself by passing up a chance to not only gain some knowledge that might help your career, but also understand more about the world? It is absolutely true that math is the language of nature. I promise you will never regret taking more math classes, but you sure might regret not taking them.
Maths are models and there are lots of them. If you don't understand the principles of a provably correct model [mathematics] you will never be anything but a grunt. Sure you can be an average programmer with little knowledge but if you want to be one of the good ones you have to know the guts of what you're doing you have to understand the model behind it. Most of my fellow ERP programmers don't know the mathematical definition of a relation or function, that's why the come to me when doing what they always did doesn't work this time.
Your question itself is an example of why you need to take more mathematics; you say you haven't used anything "beyond" trigonometry. But mathematics education is not a straight, one-dimensional path that you must follow. There are plenty of computer science applications that use college-level algebra (many computational problems, especially in computer graphics and computational geometry, require knowledge of the combinatorics of arrangements of points) which does not require calculus, but is definitely beyond anything you have been exposed to in college. Working on problems that are 2, 3, or more dimensions become challenging very quickly and there is a lot of math involved in deciding which algorithms will be able to work on which problems.
So,there are plenty of "beyonds" in directions other than calculus and differential geometry. And I use all of them in my job doing scientific visualization R&D.
Machine learning these days is all about multi-variate calculus. Anything statistical is going to require the use of calculus to understand it properly. If you do any engineering other than CS, you'll need calculus. If you happen to go into any application programming domain that needs calculus (see sciences and/or engineering), you'll need calculus. If you do scheduling work, you'll at least need to understand convolution (which requires calculus to understand) to get error bars on estimates of serialized tasks. Christ, are college kids this lazy these days? Now GTF off my lawn.
That is all.
I'm sort of curious about this too (and don't feel like reading through 700+ posts and aggregating the responses).
For myself, 99% of the time its fairly basic math (add, subtract, multiply, divide, etc) but on occasion I have gotten fancy enough to use some trig and statistics. I was pretty happy recently when I came up with a pretty clever trig formula that replaced a large block of code with a single math formula. Never had to use calculus or anything of the sort. I think the theory is that math is logical and therefore gives someone practice as logic and problem solving though I'm not sure I buy it.
Unless your programming is for some very specialized fields it is most likely that the need for very advanced mathematics are few are far enough between, that by the time you need it you will likely need to look it up and refresh your memory anyhow. So long as you are able to learn/re-learn it, you are nearly just as well off learning it as you need it.
(If at first you don't succeed, do it different next time!)
As a software engineer, you probably won't ever need to use Calculus.
However, if you cannot do Calculus, you should not be programming, as your code will be buggy and hard to maintain (assuming it works at all).
It is gratifying to see members of the programming community on the whole supporting the need for an understanding of math in their work. I worked in the Math Dept of a university a few years ago where the Head of the CS Dept removed all requirements for Math for CS students, and helped in promoting a culture of "Math is dead" among CS students. Enrolments in Math dropped dramatically and the Math Dept lost lots of its academic staff.
I worked in video games and yes: logic, discrete math, linear algebra are all musts.
More importantly, as a current math teacher it's literally freaked me out in the past few weeks how many former high school classmates have gotten in touch with me and all said something very similar along the lines of, "I really wish I knew more math; it's holding me back at my job that I don't know more; I have to hire people to do this job for me". In the past few weeks, they have been: an Artist, a Photographer, a Business Web Developer, a History teacher, etc.
We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
You almost certainly won't use Calculus.
Even math professionals rarely use it.
You are much more likely to use linear algebra and statistics. Focus on those.
-- Tigger warning: This post may contain tiggers! --
Shader gurus do function calls to do any calculus, so it's pretty much a waste of time after say Calculus I.
Heck, almost anyone coding is mostly just calling something somebody else wrote. Reinventing the wheel (e.g. a new calculus function) is almost always a massive waste of time, when most of your cycles are spent on other things that are far more important.
-- Tigger warning: This post may contain tiggers! --
Don't wanna do the math? The art department is over there, I won't miss you.
Which is why you're one of the folks around here I enjoy listening to/reading.
Anyhow/anways:
Personally, I've found set theory useful for information systems work (along with stats, because you use those types of calculations quite a lot on reports), but the set theory material helps you understand how it works.
I took discrete math during CSC AAS work, & some of it is useful, such as paths & in other coursework, I got into "shortest path" which helped when I worked for a logistics company.
I also LIKED logic during discrete, but then, I took "full" philosophy of logic after & got more out of it - it is a HUGE fundamental in how/why computers work!
(Sort of an "aside" here now: Why the heck they call it "philosophy" of logic is beyond me though, it's more math-like than anything else).
In the end/lastly:
Usually though in IS/IT/MIS information systems work, databasing in other words, where I've made MOST of my monies in computing over time since it's the "steady-eddy" end of the field where there is almost ALWAYS work (since nobodies systems, data, OR way of doing things is exactly the same), you mostly use algebraic work or stats, tops (took Stat I/II back circa 1985-1986 during BS degree).
APK
P.S.=> Back on the subject-line above though: You continually impress me, & you've done a few cool things! That's a compliment, & I don't generally give those out, but you're an exception around here...
... apk
If you want to do web dev, or UI coding then you probably don't need math. But you also don't really need a degree, you just need a lot of practice and a good experience in a company that can train you like a good monkey to fit in regular dev cycles.
If you want to do computing then maths is essential.
I'm not saying if you don't use maths you're not doing real stuff or anything like that, I'm just stating the obvious : computers' first mission is to do calculations, using logic written by programmers. If that's not what you want to do then maths will probably be "useless" for you in that regard.
OTOH and this is just my opinion : understanding of the exponential and of basic calculus is possibly the most useful skill to comprehend the world surrounding you in this day and age. (with formal logic)
Therefore I don't think any maths class can be be wasted.
If your the type of person who hates math then your not going to be very happy programming. Solving equations and programming are very similar mental processes. The fact that you want to avoid advanced math is red flag that programming might not be a good fit. Of course I could be talking out of my ass. Does anyone know of someone who hates math and is happy as a programmer?
This whole thread reads like this bash.org quote :
----------------- :') so true..
#152037 +(3230)- [X]
dm> I discovered that you'd never get an answer to a problem from Linux Gurus by asking. You have to troll in order for someone to help you with a Linux problem.
dm> For example, I didn't know how to find files by contents and the man pages were way too confusing. What did I do? I knew from experience that if I just asked, I'd be told to read the man pages even though it was too hard for me.
dm> Instead, I did what works. Trolling. By stating that Linux sucked because it was so hard to find a file compared to Windows, I got every self-described Linux Guru around the world coming to my aid. They gave me examples after examples of different ways to do it. All this in order to prove to everyone that Linux was better.
* ion has quit IRC (Ping timeout)
dm> brings a tear to my eye...
dm> So if you're starting out Linux, I advise you to use the same method as I did to get help. Start the sentence with "Linux is gay because it can't do XXX like Windows can". You will have PhDs running to tell you how to solve your problems.
dm> this person must be a kindred spirit of mine
-------------
Really...most questions are answered with: "so you are lazy and don't/won't try to figure X out, so you come to Slashdot for us to do your job" and so forth. But look at this thread. TONS of useful answers whatnot. This is why I love /. :)
Slashdot. Unreadable news to annoy nerds. - wonkey_monkey
If you are talking college, don't think of a 4 year Computer Science (CS) degree as anything to do with computers. Instead, think of it as a specialty field of mathematics that should have been called Computational Theory. True, you can learn about how to program your own compiler, make your own database engine, program your own operating system kernel, and other things related to computers - but there is going to be a lot of discrete math that requires calculus, and a lot of complexity theory and proofs to do also. So, yes, if you want a leg up get as much calculus out of the way and make sure you are taking a math course every semester to keep your skills sharp. (Trust me, I waited over 10 years before going back to college and even with "cramming" all the math in my brain before enrolling, I am far behind in my math skills.)
Along with CS is Computer Engineering (CE), which is more of building hardware. Circuit design, pathways, and all that stuff one intro course made me not care to do - and a lot of optimization is done in that field. Of course, any engineering field is going to be math heavy, so no real change there either (and also master your calculus based physics).
What you are probably looking for is a Software Engineering degree - which, as an engineering degree, will require mathematics also but focus more more on programming and software design.
Note the trend? 4 year college means lots of mathematics no matter what - and if you aren't in an engineering school but in a college of letters and sciences, then be prepared to have a liberal arts education (read: basic biological studies, basic natural science studies, an ethnic study, literature courses, humanities courses, and social science courses that will be at least 1/6 of your total credit load... as a coworker of mine said "a lot of BS work that I will never use". I disagree with him, my most useful courses have been english composition, contemporary art courses (which gave me a new frame of reference to draw on), and my environmental studies courses. They introduce new ways of thinking... and CS is all about thinking of new and efficient ways to solve complex problems.
The only way to avoid heavy mathematics (namely, at the calculus level and above) is to opt for a vocational/technical college. You know, 2 year degrees with titles like "Web Programmer" or "Database Administrator". Also, there are multiple fields to choose within the computer industry.
Of course, I don't want to discourage the 4 year route. It is hard, but worth it... and if you find you like academia, there are graduate programs that will open up a whole new way of learning. Heck, UW-Madison has imitated Cornell and implemented a Games, Society, and Learning program... its serious business, but their lab consists of a PS3, X-box, 5 networked computers, a library of video games, and tons of obscure board games - and something like that is most likely where I will be once I complete my undergrad (if tuition doesn't skyrocket... so if you are going 4 years, my advice is do 2 year transfer at a 2 year college that is less expensive and has significantly smaller class sized... Chem I and II or Intro Calc Physics I and II is much better in a class of 40 than 300.)
2 semesters or 4 semesters of mathematics does not mathematician make. My advice is to cut the hyperbole and the resistance to learning a bit of math. you'll thank yourself later that you were open to it. you won't understand how it will benefit you until you do it.
I've had the pleasure of fitting models to some interesting data. This required non-linear fitting... differentiation and linear algebra.
Fun stuff!
If you undertake a career as an engineer the more math you know the more problems you can solve.
The more problems you can solve the higher your pay will be.
It's that simple.
between CS, MIS, IT, and (whatever degree is appropriate for a web or enterprise code monkey). Math above algebra is a nice-to have rather than a necessity for everything but the first.
#6495ED - cornflower blue
When I'm working with someone who's designed a horrible database system and they can't grasp the concept of exponential increases in difficulty (and therefore search time), it's a problem. I myself have implemented PID controller loops in systems I've developed. I may not have needed 3 years worth of calculus to do it, but I at least had to understand what I was doing and the significance of errors rather than blindly guessing why I didn't have it "right". Most common example of a PID controller people have seen is cruise control in a car. It's not as simple as "if speed preset, press gas harder, else ease off". Now, that said...where I went, you didn't need any truly hardcore math to get a CS degree...a basic calc class and discrete were about it.
As an economist professionally, but a former programmer, I use math every day. Typically a combination of calculus, probability, statistics, and linear algebra.
Definitely more math now than in my programming days. But still a fair amount of programming: C, Perl, etc. The skills I gained as a programmer have been very transferable to my current career, but my math training helped keep my options open. Stay sharp out there.
Please seek information regarding applied fields and waves mathematical functions. Essentially unsolvable for any "real world" problems prior to the advent of the general purpose data processing system aka personal computer - then someone took a translation of a 1917 or so Russian paper on reflection of waves and played around with it on the new "PC" which nobody had a clue what to do with it ... F117 ring any bells? The special edition of Physica D on non-linear systems from the late 1980's is also instructional on WHY math matters.
Its hard to say what the future of programming is, but more and more I see voice recognition, computer vision, self driving cars, data mining, and other applications of AI.
While you may not need too much math for basic business oriented software fields that apply AI, that estimate the future, that analyze data may often need quite a bit of math.
Math is basic knowledge that a Software Developer is expected to have. Some may get by without it, lots of us may not use it day to day. But certainly to understand the underlying principles behind algorithms math is very useful. One example is the law of limits for Big-O complexity. Understanding how continuos functions work and how to reason about things to the limit helps you write more scalable software.
Most math is done on an excel spreadsheet- not on a chalk board a la beautiful mind stuff. Who the fuck does that in real life outside academia?
If higher education can actually drop the shit that is not needed- (think old army vet stripping off pack gear off a new recruit) it would benefit the entire economy.
-drop poetry
-Shakespeare
-literature outside of non-fiction
-excess non applicable math. if you are not an engineer but rather a office drone, like everyone else don't waste time with higher level math.
-science or chem, physics and other "padding" type classes that are non-applicable to 99% of jobs.
Focus on shit that matters, like public speaking, sales/negotiation, rhetoric, grammar, effective personal PR, maybe a basics on accounting to help manage personal finances and a skill or craft (like Switzerland does), and critical thinking. No finance gets done if you cannot close.
Take a 4 yr degree drop it to 2 tops and focus on what counts, specialization. Generalists- even though it is essentially more better (ha ha get it, dummies?) than specializing, employers today do not feel that way.
This way less student debt, faster time to possible employment and overall lower wages (which is good, takes real prices down with) which would open up new jobs and new companies because of less overhead costs.
I have been working in the IT industry for over twenty years and I have never actually used calculus nor anything closely related, however when you are studying mathematics, you are doing much more than that. Your brain is being trained to think in a specific way, you are becoming analytical and realize the relationships between abstract concepts. Such way of thinking cannot be achieved by accident, your brain needs to be trained and needs to exercise in that way if you want to become a creative person that will be able to handle the requirements of working in IT.
I've been a professional software developer for 17 years, including a stint with the space program. I've only occasionally used higher mathematics, so although I excelled at it I am pretty rusty now. My advice is to take as many math courses as you can stand.
Someone once said that education is what is left after you've forgotten what you learned. It's very true. Though I've rarely used anything above algebra professionally, studying mathematics exercises your mind and helps you see things you would have otherwise missed. Furthermore, higher math has less to do with arithmetic and bean-counting, and more to do with logic, proof, patterns, and structure -- the very stuff of computer programming. I've worked with far too many software developers who did not have an adequate math background, and the difference is very noticeable. You should see how some folks stumble about trying to assemble a compound Boolean expression, put together a join of multiple database tables, or understand the workings of a multi-threaded program or a distributed system.
Do yourself a favor and dive into math. It's your friend. By the way, I would say many of the same things about music.
Might just be my chosen field but as an Electrical Engineer I use math constantly. even if it's just SQRT3 for figuring phase to phase vs phase to nuetral... things like sqrt 3 cos theta and sqrt 3 sin theta are constantly needed for watts and vars... higher math occasionally, like once a week example RMS calcs where .707 just won't cut it and integrals are needed. Having the actual knowledge to understand what the formulas mean makes all the difference in the world. At times, something doesn't fit and the numbers are wacky say when you are trying to figure out a fault and it turns out the formulas you use are based on a balanced circuit. If you understand the math you just plug in some angles and it suddenly makes sense... and confuses the heck out of the three technicians that called you out because "It just don't work" !
Mostly because I've been writing software to dynamically generate problem/answer sets for First Year Calculus Based Physics. In my previous 15 years of writing software professionally, before starting that project, I've used juicy math just a few times. The first poster got it right, computer programming is mostly about counting beans and keeping records.
I'd even go a bit further. (Completely ignoring some obvious questions begging in the topic about work in programming.)
Every job worth doing has interesting things about it, if you know how and where to look.
The math teaches you how and where to look.
And you can do a much better job at any job you are interested in.
Admittedly, there is a dangerous down side to that. If you get too interested in the stuff that isn't on the project goals, you may end up getting fired for playing instead of doing your job.
But, if you're slinging burgers and you have the math, you can keep a running estimate in your head of which supplies are being used at what rates on what days of the week. That's a key to anticipating customer demand. And the only way you're going to make a living slinging burgers is to be a manager.
Maybe you need to apply strategy when you talk with management about the things you notice, because managers can get paranoid when their employees seem to know more than they do, but the math opens options. It's up to you how you use those options.
Computer memory is just fancy paper, CPUs just fancy pens with fancy erasers; the 'net is just a fancy backyard fence.
You may not have been aware of using calculus, but you were using calculus.
Applied calculus is not always obviously calculus. You may not need to recognize it to use it, and there is a certain degree of luck, or instinct, in getting the calculus right when you don't know that's what you are doing.
But you were using calculus. And a bunch of other higher math, too.
Computer memory is just fancy paper, CPUs just fancy pens with fancy erasers; the 'net is just a fancy backyard fence.
The foundation of statistics is calculus.
I encourage you to dicsover the calculus which you have been using without even realizing it.
It will make your job more interesting, and will give you more options in improving your work.
Computer memory is just fancy paper, CPUs just fancy pens with fancy erasers; the 'net is just a fancy backyard fence.
So, I've been banging electrons pretty seriously since the late 70's. And, yeah, ham radio involves calc, even though the equations are dumbed down for your random Ham.
Got in when undergraduate work required FORTRAN and Pascal, had an original PC, and wrote lots and lots of code doing numerical analysis on DSP work, Z-transforms and all.
And, after going to work in the industry, never stopped. DSP algorithms, analog circuit design, mixed analog and digital circuit design, solving Maxwell's field equations for oddball topologies. And coding, coding, coding. It used to be FORTRAN: Now it's C, C++, tcl, Vee, Labview, and homebrew operating systems for DSP devices.
And my coworkers with CS degrees know and use their calculus: trend lines, Markov matrices, and so on. If you haven't guessed, Linear Programming heavily involves calculus in the solutions of huge matrices, and you had better know what the error terms are, where they arise, and what to do about them when they fail.
I meet people who tell me that the algebra they learned in high school was useless. OK, so these people aren't in technical fields. And that's the point.
and for a few years afterwards. I would strongly discourage it. Oh, Math! my bad.
Question for you:
When did you take the discrete math -- before or after calculus?
Unless you are an exception, you took it after.
Go back and look at the tools for reasoning that you use to understand discrete math. Where did you learn most of those tools?
Well, I know that in jr. high school, there were kids who instinctively understood set theory. I was one of them. But even for me, there were dark corners that I could not pierce until I had calculus, and it was getting light in those dark corners that made it possible for me to understand programs beyond the most rudimentary level of sequences, conditionals, looping.
Even writing a function, without the tools I learned in calculus, I would have a much harder time defining the function, deciding what to include and what to put elsewhere, determining what should be parameters, etc.
I don't consciously use derivatives and integrals, but I use the same tools that I learned to use when learning those. And calculus really is not just derivatives and integrals.
Computer memory is just fancy paper, CPUs just fancy pens with fancy erasers; the 'net is just a fancy backyard fence.
All three of his personalities at work use math.
Computer memory is just fancy paper, CPUs just fancy pens with fancy erasers; the 'net is just a fancy backyard fence.
I'll spare you the usual snarky response I typically give to this question wherein I enumerate the various math I use on a daily basis because what I do (robotics) is pretty specialized and using my education somehow makes me an elitist. Instead, I'll ask you a question: did I "use" calculus today when I showed my colleague (a) where the threading bug was in his code and (b) how to fix it?
I see two answers: "no", in the sense that I didn't solve an integral equation, didn't make an epsilon / delta arguments, appeal to continuity, or invoke Fubini's theorem. Of course that would be absurd. On the other hand, the answer I would give is an emphatic "yes" in the sense that calculus, together with trig and all the other math classes that I've taken over the years gave me the analytical skills to take the symptoms and put together a list of possible hypotheses, the proof and argumentation skills to immediately refute several of those hypotheses and know what additional facts were required to either confirm or refute the remaining hypotheses, and so on. More importantly, however, is the fact that my math background enabled me to communicate in unambiguous yet concise terms what I felt the next steps should be.
Sometimes, the faster it gets, the less you need to know,
but you've got to remember: the smarter it gets, the further it's gonna go.
When you blow at high dough.
In my opinion, programming is putting mathematical concepts/theories/hypothesis into practical use based on a particular problem, and it depends on which programming language you're using and what mathematical concept you're using to solve a particular problem. Consider the usage assembly language as an LLL -- Low-Level Language; you'd use boolean algebra for not only coding, but also to interface a circuit under some circumstances, or just to understand the computer organization and architecture like those of VNA --Von Neumann Architecture. As for other HLLs -High-Level Languages like C/C++, Java, JS, C#, or Python, the picture becomes clear that you don't need to deal with the machine/low level specifics as such in the assembly language to manipulate binary digits. Instead, you use basic logic and algebra to reach your final goal from the source code. What I'm trying to state here is that the degree of the programming language determines the level of math and the type of math that you need to use to accomplish your desired task. Unfortunately, highschools have specified plans by the department of education, so it's no wonder that they're forced to stick with that plan. I mean, it is important to understand, for example, boolean algebra to understand the functionality of logical circuits, but it would seem absurd/weird to put that into the education system in schools. But culculus and linear algebra are being taught since childhood, and they're still being taught in colleges/universties. So, the question that pops into my mind right now; "How do we improve the mathematics classes in order to provide coverage for major fields that puts mathematics into practice?" To me, I don't know, but if I was a highschool student, I would either study whatever is given to me and keep up with the educational changes, or just get more information by reading external materials other than those presented in the highschool, of course if I'm interested in learning rather than waiting for the class bell to ring.
I don't think I can even make a game without using vectors. I'm sure it's been done, but not by me.
Look, people are always going to complain that math is hard and shouldn't be necessary. Suck it up and learn the fucking math. It's not poison; it won't kill you. Even if you don't ever use it, since when has learning math been a bad thing?
Sum of a series.
Nobody is going to pay you to literally count beans in jars all day long.
Stuff beyond that requires the ability to work with sums of series that some people understand intuitively, and the rest of us learn in calculus.
(And, actually, those of us who understood it intuitively generally discover later how much we missed because we thought it was too easy.)
Yes, we use math even if we don't understand that we do. That includes higher math, and discrete math is actually part of the higher math.
You generally take calculus first because most people don't have the tools to work with discrete math until they have taken calculus. Many of those tools are actually part of calculus, even though they can be understood and used intuitively by some people.
Computer memory is just fancy paper, CPUs just fancy pens with fancy erasers; the 'net is just a fancy backyard fence.
It largely depends on what sub-field of computer science you go into. If you do any DSP work (or more specifically, image processing/computer vision) there's going to be a ton of math. Some of those papers will make your eyes bleed. More to the point, if you're implementing some algorithm, even if you're using a library to perform say, an FFT in the actual code, you still have to be able to grok the paper to know what to do, and that will require some strong math skills.
I think every one uses it at some level. There are many abstract ideas in math that apply everywhere. Like the concept of transativity. Addition is certainly used by everyone. You add in combinding things. Learning computer science has brought me to a new understanding of what math really is. Math is more than number and symbols. Some of us see it better in numbers and symbols and computers certainly can only really understand things as binary represented numbers.
If you're determined to live life as a ward of the state and/or a homeless guitar player, english major, or forager then no, you don't have to use no math.
Beg to differ. Calculus, like all math, is about the efficient categorization and precise definition of the smallest possible set of terms needed to describe a particular set of concepts. Or, in other words, "organizing data".
One complication -- if you start applying higher mathematics to calculate the battery life, don't you end up decreasing the battery life because you're invoking more processor intensive (and therefore power-intensive) calculations to monitor it?
Most universities require higher math (and other non-related classes) for computer science in order to soak up extra tuition fees and boost their profit margin (i.e. turn a two year curriculum into a four year one). The only class that I was required to take that I actually found useful was Technical Report Writing. I never used Chemistry 102, 102, 103. I never used Botany 101. I never used Calculus 101, 102, 103. Etc. The highest math *I* have used is Algebra with a smattering of basic Trig. As a disclaimer I must admit that I am NOT in an engineering or scientific business.
It certainly doesn't hurt to know more, especially if you aspire to go into something scientific. But I have found reference books to be most helpful if I need to know something more specific
I use arithmetic and estimating everyday. I use mean and standard deviation on average every other day and trigonometry weekly. I use calculus monthly and advanced algebra maybe once or twice a year. Oh and my job title? IT Specialist.
I sold and fixed used computers in high school and thought that it was a form of engineering, and that there was no fundamental difference between computer assembly and design of the components themselves (I was 15). I went to a good college sort of by default and learned the difference observing actual engineering there.
Math is like that, you don't think you need it until you get to a point where you try to generalize what you and others are up to, and suddenly math is fundamental to what could provide an advance to what you're trying to do. This is coming from a guy with a robotics PhD, so maybe I'm biased.
Calculus in particular (up to the usual Calc II) is worthless, everything you need to know is the first part where they estimate the area under a curve using a bunch of columns. Calc III is good because it gets you used to vectors.
, calc III is good in that you get used to vectors
Statistics and linear/polynomial fits are most useful for GIS and remote sensing.
I didn't study mathematics formally.
To be honest, I buy and keep math books on my shelf so I can look concepts up when I need them.
I am surrounded by PHDs from various disciplines. Most of them cant tell you how a priniciple components transform works,
let alone *what type* they are using. They have heard of it though. Most of them cant function without Matlab or Ms Excel
and considering the limited functionality of those programs that they tend to us, it leads one to wonder why they would keep
spending the money on those licenses as opposed to using the same functions in some free software.
I sometimes get flack when I expose flaws in thier application of statistics
and mathematics. This always seems odd to me since getting the work done correctly should be more
important than someones academic ego. These are people who *studied* mathematics (!!?).
It's better to be able to find and apply information on mathematical concepts than just passing some
test then promptly forget the material.
Universities are the academic equivalent of the music industry. They provide a product that can be
now be read from e-books and researched via the web. What we need is the educational equivalent of the
MP3 to take the power of acreditation away from these corporations and put it back into the hands of people
who can do the actual science.
Most recently, I've found calc and lin algebra valuable in applying machine learning techniques (neural nets and clustering analysis with big data) and earlier in my career in understanding adaptive audio/video networking protocols. I don't think I've ever 'implemented' calculus in software directly, but it was necessary in formulating the solutions that were eventually coded up.
Obviously, some domains (game programming, genetics work, etc) are naturally more math intensive, and I've been doing spare-time work related to space and rocketry, and found I've had to go back and study my old math materials (and even learn some new stuff) to even begin to make progress in the field.
A lot of programmers I know who are content to just build web sites, intranets, etc. have very little use for anything over algebra, honestly. But that's a different kind of job than I think most people graduating with cs or ce degrees are interested in.
Only in the U.S. does one find questioning the usefulness of mathematics. Undergraduate mathematics does not suffice for much of the cutting-edge computing science happening today. Just finished a grad-level course on computer vision which is all mathematics (projective geometry) and my iphone project was an augmented reality app. Machine learning goes deep into math and statistics in grad school. I was even surprised how much honors level undergrad and grad school mathematics I am finding in grad school. Riemann integral (undergrad) does not always cut it so functional analysis is everywhere. Hilbert spaces, topology and all kinds of other higher mathematics. Just today I was writing CT image segmentation algorithms and was using FFT which is fast fourier transforms which is at least a couple years into undergrad school for level of education. So just stop it already. Just drawing a damn circle on your screen requires grade 12!
Incredible how ignorant our society is about mathematics. And then to hear it from people who are clearly passionate about computers on slashdot? Seriously? Do you think scientists at google or apple are just taking the sin(45) all day long?
Wake up to the new world. While you continue to try to find evidence that all you need is trig for your programming career, the rest of world is getting an education. And coming to get it here in the U.S! Did you know that in 2010, 6% of the U.S. population was of asian descent and that 45% of science and engineering undergrad degrees went to those of asian descent! 45%! That's just asian descent. The race issue is not an important one. What is important is that the mathematical education system for a developed country is so poor in the U.S. that we are even losing the notion that mathematics has importance at all!
On the other hand, if all you want to do is query a database and display the results, then maybe only trig will do. But if you want to be the best programmer you can be then learn some math.
One last thing. Math is awesome! Some of the beautiful and wonderful ideas can be found in math. Not in high school that is for sure but if you give it a chance, you'll see. It was challenging, but learning all that cool stuff and programming it was some of the most fun I've had. I'm still enjoying it.
Let's just stop embarrassing our country with this 'math is useless' talk. If aliens ever landed here on earth, would you seriously try to convince them that math is not useful for programming our mathematical machines!?!
I didn't think so.
Well, I use it a fair bit, but I'm a mathematician so I guess it goes with the territory. I work in agricultural research developing a farming systems simulator. I suppose you could call me a mathematical programmer. I take formulae and equations and turn them into code. I don't have a formal degree in IT or programming though, my degree is in Science (mathematics, funnily enough).
can't count
The hot programming jobs over the next decade will be in data analysis, and that is really just cleverly applied statistics, abstract geometry, calculus, and matrix algebra. Game development is fun, but it's a lousy living.
why has almost every math guy i have ever interacted with personally been useless for real world problems ?
basically, there attitude seems to be, it is not my job to understand your problem - it is youor job to explain it to me in math, so I can fix the math...
I mean, basically worhteless and a waste of time
but maybe I'm not talking to the right guys, or I'm just stupid.
Beyond that, the real question here is what % , x, of hte US population needs math beyond grade school 4functions ?
I would say x 1,000) we have , as adults, to decide what it is that is worht teaching.
I would say, looking at all the misery in human life, that psychology is a lot more improtant then math
So I though I'd chime in here.
Computers only understand numbers. They do not understand equations, or any other symbolic representation other than numbers in binary format. This is where
numerical linear algrebra comes in. Any calculus etc done on a computer is calculated by a numerical estimation, usually this system involves a system or
multiple systems of matrices. What are matrices? They are grids of numbers.
This is what I have gathered from the first two weeks of my current Algebra course. It's very interesting stuff. You can sit here and wank over who has learnt
what but it seems that it does indeed come down to linear algrebra and knowing how to convert integrals, ODE's, PDE's etc into systems of matrices so that a
computer can understand the input and compute the answer. Interestingly enough this week we used Nystrom's method for integral equations. This method sets
an integral equation into a linear system and using Simpsons' or the trapezoidal rule to give an approximation. The larger the system the better the approximation.
Further more, why is mathematics critical to computer science? Studying mathematics builds a very strong problem solving foundation, a foundation which can be
applied to many different fields including programming. If you can take a course on group theory and understand alot of what is going on then you are likely to be
able to pickup a book on C++ and learn the language. Of course being a good programmer is not just about knowing a programming language. There is algorithm
efficiency to consider and many other things that I wont pretend to know about. However this can be learnt from a book. Of course you could say this about
mathematics as well but in reality it's alot harder to adequately give yourself a solid foundation in mathematics than it is in computer science. Afterall Computer
science is applied mathematics. Ideally you would major in mathematics and computer science.
As someone who does computational geodynamics (mantle convection, tectonics, tidal dissipation), I use math(s) all the time. I'm doing trig, vector calculus, complex (real and imaginary) analysis, PDEs, and linear algebra all night and day. Sometimes I even bust out the spherical harmonics, why not? I don't use things like combinatorics, number theory, or topology, though the last is relevant for setting up meshes for finite element models. I don't use a lot of statistics, but my colleagues who perform more data analysis are all up in there.
The PDEs and the like are discretized for numerical integration, but I need to know the underlying continuous mathematics in order to do that. It's true that routines already exist for many standard problems, but if I want to add more physics or solve new problems, then I have to be able to do that myself. I also need to be able to solve simpler problems analytically, so that I can verify that the numerical models are actually giving the right answer.
I should note that my educational background is in the physical, rather than computational sciences (specifically geology, physics, and astronomy). This involved a lot of mathematics classes. A major in physics comes with a free minor in mathematics. My computer science background is relatively week. I've only ever taken a couple programming classes. I picked up most of my computing skills in grad school or on the job.
I went to college (for the 3rd time) at the age of 30. I had a hard time with Calc etc. and hated the first two semesters of Comp Sci, but got over that. I literally had to ask the Prof in 101 where the switch was on the machine.
My first job was with a government tax department. One of their biggest problems was that small businesses kept changing their names trying to escape from last quarters' tax bill. I got assigned to write a routine to track business names - really to invent a way to track businesses changing their names. This led to designing an artificial key for a business, and assembling a list of all their names and date the changes.
Then after some work I found that some of the businesses randomly changing their names would reuse a name eventually. Not smart if you're fleeing debt associated with that name, but what can I say? That created a closed loop that would circulate endlessly, or until a main frame operator got suspicious and stopped the job; or until I wrote code to escape a closed data loop.
Making a really long story a little shorter, you will need math, and the skills learned working on math, no matter what kind of work you do, unless you are just a code monkey coding things with all the complexity designed by a systems analyst with 2 degrees in math.
If that's all you want, to be a code monkey on a system you don't understand large parts of, then you don't need a degree in Computer Science. If you want to be any kind of scientist, or systems designer, like those who build gaming engines or rastor graphics programs, or tracking genetic variability in organisms being studied in labs in Research Triangle Park, NC; or at C-M University, in Pittsburgh; or Cal Tech where they just landed a curious robot on F'Ing MARS, then don't get a degree, don't study math, stay ignorant.
That kind of work is actually going on everywhere now, not just these examples I pulled from my a**, I never left my home state to have a good career doing important work. I didn't use Calc every day, but I knew that I could if I needed to.
"You can cure ignorance, but there is no cure for stupid."
Think of the Irony!
The question is not whether you'll spend all of your time applying math. The question is whether there will come a time where strong math knowledge will help you solve problems which others cannot solve. There are any number of specialties which this applies to. Do you really need parsing abilities? Database abilities? Filesystem abilities? Network abilities? Image-processing? No, of course not - except that if you have them, you will find them helpful at unexpected times.
Unfortunately, it is usually not the case that someone will be weak in a subject AND they will still be able to identify that their skills are not up to the problem. Rather, what usually happens is they just keep hacking away, oblivious to what they're missing, spewing bugs in all directions.
I have lived on both sides of the fence, having written code for 35 years having failed second quarter calculus and thus the entire university program. After 35 years, I took a break from work, went back to school, passed 4 semesters of calculus and many other courses, and came out with a BS in Physics at an amusingly advanced age.
In the course of my first-segment career, there was were a couple of projects where I had to rely upon someone with greater math background and an expensive MATLAB DSP application package.
The first project was a low-jitter timing subsystem, where a device needed to synchronize to timing derived from a signal from a master device. I coded it, then used a combination of fragmentary digital filter experience that I'd picked up on a couple of silly personal projects over the years, and partially informed intuition, to run the filter algorithm at two different rates: a high (but CPU-expensive) rate for acquisition (where the abstract design failed), and a lower rate, exactly according to the abstract design, for tracking.
The background that I received from 4 semesters of calculus (that included a skeletal introduction to differential equations) might have helped here, but it would not have been sufficient.
The second project was a digital payload processor / modulator. I initiated and functionally specified much of the project (which mostly was an implementation of certain published standards), but it required contributions from 3 PhD researchers with evolving expertise in CIC filter design, to make the implementation feasible in a modern FPGA with integrated multiplier/accumulator blocks.
My contribution consisted mostly of generic software, but there was one area where I had to quickly try to teach myself some mathematics, and it was mathematics that would not be taught in undergrad physics, and most likely is not universally taught in other than cursory treatment, in undergrad comp. sci. programs: finite field arithmetic (error control coding). The objective here was to examine whether a legacy implementation whose design rationale had not been adequately documented, was truly equivalent to a published standard (it was, but I discovered a subtle gotcha), and to validate a proposed implementation against the standard.
What arguably has been most valuable after emerging from even a late and rudimentary education in a scientific discipline, back into software work, is having been exposed and held to a scientific standard of rigor. This stands in devising a sufficient and feasible scheme of measurement, in collecting sufficient data, in formulating claims that are supported by data rather than mere belief, and in making clear when the line between data and belief must be drawn and crossed. At times it turns me into an organizationally inconvenient holy terror. It also allows me to deeply examine and locate defects that are potential product and reputation killers, to endure hypothesis-destroying experiments, and to emerge with a clear understanding of the nature of the defect, and how to cure it.
I do wish that I'd had time and energy for more math: a practical course in statistics and design of experiments, preferably one designed to teach students who are well along in some field of study, rather than as an early weed-out for weak students in oversubscribed majors. The introductory statistics course at my university, which mercifully is not required in the physics major, is of the latter type and is generally reviled, even by the capable.
I just thought you should know you're wrong.
but not the way you think. You can get away with game development now without knowing how physics works. Get a game engine like you mentioned and just treat every object as a Newtonian solid body and let it's physics system handle the math. Or you could go for calculus overkill and let wind affect every bullet in a shooter game by treating them as particles and integrating up from delta-delta v (change in wind acceleration). More likely, you'll want to know the calculus, some of the simplification like a parabolic arc, and know some of the mathematical estimates of the multivariable equations; and you will mix and match to meet the requirements you have. If you don't know the math for any part of that, then you are missing that tool in your mind and can't use it.
What math for what parts of a game? Calculus based physics for physics engines, obviously. You could do algebra based and discrete time steps, but try it with anything past a 2 body problem and it's a simulation, not a game. Someone else mentioned and I'll second quaternions for graphics; learn to love them because lots of the hardware is accelerated for them and Euler angles will screw you when you least expect it. Graph theory for space partitioning, which shows up in both graphics engines and AI. Statistics shows up anywhere, from simulations to helping you figure out where and why programs crash (simple example, a function that handles random numbers in a game crashes 1 out of 36 calls when called by some part feeding it the results of 2 six sided dice. Write your test case for 1 and 12.)
So if you are comfortable using tools from other people, and writing code that glues pieces together, you don't need a ton of math. You may not spot problems as quickly, and your code may not be optimized as much, but it will work and sell. If you want to write the engines that other people use, or want to add things in to other engines, then you need a lot of math.
You need to use vector math to figure out Big O complexity? Maybe for a specific application like some vector math based functions, and proving the complexity of a specific function operating over N-dimensional space, but the principle doesn't require anything past knowing functions and exponents.
OK, I'm not your typical engineer - I have a doctorate in Chemical Engineering and I work at a National Laboratory.
There is a common meme that engineers just plug numbers into formulas. Let's suppose that is true - who develops the formulas? That's the job for those (supposedly) over educated engineering nerds like me.
I use calculus about twice a week, and about four times a year, I have a really interesting problem using advanced differential equations or advanced statistics.
i just want to point out that there are occupations for which mathematical skill is essential..
Learn English and write quests. That's story telling. Are you good at writing a good story?
Take Art classes and make skins and Landscape. Can you paint with oils?
If you want to do graphics You had better know how to wield a rotation matrix! That's Linear Algebraical. You did not take that in high school. At not in the US. Perhaps some other countries teach that in high school bu not here.
At my collage a renown grad student said Calculus taught programers symbolic manipulations, I think any good programmer should cope with that. Math will not hurt you if you have any smarts at all. But perhaps you should learn to paint.
I for example us a great deal of differential equations when I'm developing audio and video filters (FIRs, IIRs etc...). I don't even have a math education past trig, the rest is from books and websites.
:) Even when I was working for a web browser company, I'd find myself writing a JPEG decoder which isn't really hard math, but it's at least somewhat advanced.
There are cases where I'd chose to perform real-time filter calculation for adaptive filters (things like calculating the points of an FIR without knowing my desired frequency response before hand), it's not terribly common outside of for example echo cancellation where I'd want to design the shortest possible filter with the desired effect for the current environment instead of just using a long filter with good response in all frequency ranges.
I generally do most of my math work in a tool like Matlab (sometimes Mathematica if it's more mathy and less computery) and then when I have the coefficients I desire for a formula, then I'll code it in C or C++... oddly sometimes in DSP assembler.
That said, another example of where I'm using calculus, though not terribly advanced calculus is that my 8 1/2 year daughter, 10 year old son and I are writing a platform scroller for their phones. The girl is doing pretty well with coding the object structure, my son is doing much of the artwork. I'm working mostly on things like motion. In the case of motion, I make use of rate of change calculations and apply them using simple physics. For example, if the user holds the right arrow for X amount of time, I increase the positive moment energy. If they press the left arrow it applies negative momentum energy, if they simply let go of the arrows, then at a given rate, the horizontal momentum energy reduces towards zero. For jumping, when the user presses space, depending on the duration, upward energy is applied until a peak is reached which will fight gravity. Gravity however works as expected 32feet *...
I also have used math a bit in producing a TDR for cable length detection.
Math is VERY useful in programming so long as you choose to work on projects where math is interesting
I use meth every fucking day I dont think I could get though the day without it......oh wait you said math
Thanks for all the great responses! I'll look into taking "discrete math for programmers" (thanks @Immerman), or just discrete math. And I'll definitely keep taking math classes.
Several years ago I wrote an octonion calculator using javascript. To compute exp(X) for a general octonion (a type of eight dimensional number) I had to use a power series expansion and test for convergence. This is calculus. To see the code, just view the page source:
http://jwbales.us/rpnOctonion.html
If you have to ask the question as to whether or not you actually should be taking Calculus; don't
Its a lot of work and you will hate it. You will probably end up dropping out with a shit load of debt, where you could have been doing something you actually wanted to.
It also mean that's one less resume I have to deal with.
Seriously, not having a CS, Engineering, or Physics degree makes it really easy for me to circular file your resume. Sure there are developers out there without technical degrees, there are even good developers out there without them. But you had better be a fucking rockstar if you don't have the technical degree to back it up.
Perhaps I shouldn't let the secret out, but my son makes some pretty big bucks for his programming-experience-level precisely because he can do the heavy lifting in the math department. He was a physics major in college, which anyone who reads XKCD knows is the highest form of applied math (in terms of being the applied math that is closest to pure math). For his undergraduate research work, he worked on software that processed data from one of the neutrino telescopes operating in Antarctica. So, yeah, he had to use some pretty high end math to design his software. Now he does business analytics. He is on the leading edge of a technology that will drive the future. And I don't mean "technology" as in some nifty, new programming trick which will be obsolete next month. Or a programming language that looks slightly easier to read. I mean Technology (with a capital T) which applies across all fields from biology, to marketing, to astronomy to how to best manufacture the tires on your car. Every EFFING thing you will ever touch or do anything with for the rest of your lives. Analytics and it's cousin, Modeling, will play a part in it. Even the keyboard you type on all day required some pretty high-level math just to design the springs to give it just the right feel so you can keep tapping away all day thinking you aren't using any math.
Now, perhaps the reason most of you programmers out there don't think anyone will ever use any math in programming is merely because YOU will never use any math in programming, because YOU don't know how to do it. And I am not talking about just taking a course in calculus, maybe getting an A, but then moving on and forgetting what you learned. (Admittedly, exactly what I did.) If you really want to learn and KNOW math you gotta beat your head against it for years. Practicing more and more and never giving up even when your brain has gone into nuclear melt-down for the fifth time today. Taking more advanced courses and courses that require the use of that math all the time, not just a couple of times a semester. Perhaps, if you actually still knew any of the math you were forced to sit through, you would have been offered jobs where you would use that math and then you would be singing a different tune.
Has everyone forgotten that Google is based on a mathematical algorithm, not just a lot of fast servers or fancy programming. How do you think they calculate the trajectories for Mars missions and make real time adjustments, taking into consideration the lag time between when the message is sent and when it will be received, as well as the relativistic factors considering how fast the vehicle is moving now and how fast it will be moving when the maneuver is finished..... I guaran-damn-tee you that they don't just do a hash-table lookup and then do an x++.
So, if all you ever want to do is write more code to push more HTML and bits and CSS out to browsers, like a bajillion other programmers, then stay in your comfy, mathless world. Just keep in mind, that it is easy to train billions of Indian and Chinese programmers to do the exact same thing. Soon, there will be software that does it almost automatically. However, if you really want to participate in the most exciting parts of computer technology that are coming up in this century, then I highly recommend that you double-triple down on that math.
Now, I know I am getting a little braggy and preachy. But hey, people ask questions because they want opinions. And all I saw was a bunch of boring answers based on a limited, dead-end view of the future. And, I am really proud of my son. So there!
It isn't so much the practical use of mathematics that is required in progeramming, rather the state of mind and way of thinking that it forces upon you.
Gödel.
Maths isn't directly necessary in most programming. But ...
Is history necessary for most people's jobs? What is the practical value of learning about literature, religion, ...? You don't need them if you are hammering nails all day, or writing programs, but they give you a background that is often valuable in other circumstances. Do you need to know about golf to do your job? Of course not, but if your boss plays golf, it can give better contact to him because you can talk about a shared interest.
In order to learn mathmatics you need to learn a certain way of thinking and solving problems, which is very useful in general and in programming in particular. So, you do need your maths.
Pretty much all engineering can be described as, "will solve second order differential equations for food."
Advanced mathematics is critical in certain spheres. However, in greater than 95% of software development positions you will rarely do anything beyond advanced algebra. The fraction of time you'll do anything beyond the simplest algebra will be well below 1% of your time.
What most programmers do involves a lot of string parsing and handling/formatting data from databases; these completely eclipse all forms of mathematics in business software. If you ever end up in web development you could easily go for months to years without touching anything more complex, mathematically, than incrementing a variable. For example: I built a fairly large web interface package that has no math of any kind. None. It parses strings and reads/writes files, chooses what to return to the browser based on header data (string parsing), etc. A later version had simple iteration of a couple values. It has a lot of regexes for data validation and processes/juggles some crazy arrays of strings. Eventually it needed to support a binary protocol, which required the most complex mathematics in the code: a modulo 256 checksum. Whatever pays the bills, I guess.
Trust me, either way you'll suffer on one side or the other. If you have the skills you'll end up on a series of projects where you never use them. If you don't, someone is sure to throw a problem at you that requires mathematics you don't know.
This is, sadly, the bleak reality in store for most software developers that must develop business software to pay the bills.
Philistine.
so the chance of you seeing this one is minimal. But, for what it's worth, I use math.
I'm an engineer. Qualified as a computer systems engineer, but work in control systems software for large machines. Actually it's not that often that I need to sit down with a pencil and paper and figure something out. It happens - occasionally someone wants to express a control function as continuous-time parameters and I have to implement it in discrete time, and then I have to sit down and do the bilinear transform myself and code it up. But it's pretty rare.
The vast majority of the time the work I do is based on some math, often involving linear differential equations, time to frequency domain transforms and back, s- or z-domain frequency response assessment and so on, but I don't need to have all the details in my head. What is much more important is an intuitive grasp of what the math means. If someone says to me, "That frame has a natural frequency of 1.25Hz," I don't need to be able to sit down with a pencil (or some other tool) and show that they are right or even be able to figure out how to write down what they've just said in a precise mathematical form. But I do need to know how that feeds in to the control design and then into the structural design.
I think that this intuitive grasp can only be gained by having sat down for a few years and studied the math underlying it in detail. I can't just write down all the math now, but when I was studying I could, and given a couple of hours I could do it again.
Slashdot - News for Nerds, Stuff that Matters, in ISO-8859-1 Has just realised that beta makes this signature redundant
I'm a gradstudent specializing in Machine Learning at a top US university.
The best, most productive days are spent with the computer off and an engineering pad.
As the mouseover text here says, the fun parts of life are optional:
http://xkcd.com/1050/
Math is essential. Most of the projects I worked on required in. Pattern reco at LMCO required linear algebra (matrix operations) and abstract algebra (error correction codes - galois field theory) and statistics. Audio encoding/decoding needs the knowledge of diff eqs and trig. Math is essential otherwise You know how to code but have no idea what to apply it to when dealing with applied problem solving. Currently the stock market job requires diff eqs, statistics and linear algebra knowledge + a bit of economics.
I wonder how the original poster is handling the flood of impressive comments from many highly qualified respondents?
Which respondent you have read so far speaks to your condition?
Which respondent sounds to you like what you will say and do regarding mathematics in five years from now?
I have an idea for the original poster. Print out the single item in this Slashdot column that you regard as the advice you want to take. Come back to Slashdot in five years and tell us (might not be me) how your next phase in math learning worked out.
As a programmer for a large game developer, I find myself constantly using many forms of maths. A knowledge of subjects such as linear algebra and discrete maths tend to be critical in my field, and although there's always a library to do it for you, it's not being able to do the math that's important, it's knowing when, how and why to apply it.
A good knowledge of maths can affect many aspects of programming, ranging from knowing and understanding how to perform low-level bit-wise operations (and why you'd use them), to being able to produce good implementations of algorithms, and how to pick the best one for the job. Being able to use math as a programmer puts you at a huge advantage over those who don't.
At my current position, math skills are absolutely needed. I use them for image analysis, data fit, physics simulations et.c.
Since some of my co-workers are phd's and use analythical math more than algorithmic solutions, I must understand such math to a degree that I can implement it. It's also often great fun and smart solutions which I would never think of myself in the first place since I have compuer science background.
I think that you should always have a basic understanding of what you are doing and what your tools are doing. Otherwise you will someday end up using statistics without proper assertions or miss a great opportunity to enhance your software/site because you didn't do your metrics right.
...or actively is involved in logic thinking and communicates the results of that with others.
...but not in the sense that most people think...
I don't use much math per se, I almost never have the need to calculate anything by hand. But, learning math taught me the very important, and constantly needed skill of abstraction thinking and how to use symbols to represent just about anything.
This skill has, among other things, paved the way for learning programming, a skill used in my daily job.
I'm just finishing my PhD in mathematical epidemiology (and before that I did an MSc in applied maths).
Yes, I use calculus: it forms the basis of almost everything I do. I've used systems of ordinary differential equations (ODEs) to model disease spread, and the effects of culling. I've also used spatial stochastic models to examine the effect of space and small population sizes, which are based straight from the ODEs.
Partial differential equations (PDEs) are also commonly used to study spatial effects at both large scale (e.g. spread of disease at country level, waves), and small scale (e.g. tumour spread).
Programming is pretty important for me. My models range from simple (100 lines in GNU Octave to examine long term effects of changing parameters), to intermediate (2,200 lines of C for the spatial stochastic framework examining population based models), to huge (for the stochastic individual based models that I'm looking at next). My supervisor (whose supervisor's supervisor was Peter Higgs) started out as a physicist, and still uses Fortran 77. Some people I work with aren't big on coding, and just start with someone else's model and adjust it, although they usually have problems if they don't understand how it all works.
Your brain is basically a muscle. Math will train your brain. Developers needs brains.
otherwise you wouldn't come with this kind of thing. https://en.wikipedia.org/wiki/Fast_inverse_square_root
hey man, do us all a favor. be lazy and don't learn any advanced math. as americans, we surely don't need any people knowing both how to code well in multiple languages AND having the mathematical background to make rigorous predictions about the physical world. na, you should learn as little math as possible. and hey, it's a lot easier to get good grades when you aren't taking some difficult infinite dimensional analysis class.
Even if you do not use it directly in your disciple, learn as much math as you can and go as far as you can go. This adage is applicable to any pursuit. Those of us who program for signal processing will use a TON of math which helps us also to understand music, art, human perception, video, compression, cellular technology, and just about everything that impacts your modern life. I pity the individual that does not know math--they are missing out on some of the most divine insights life has to offer. Galileo: "Math is the language of God". I agree. Recommended reading: Barrow's Pi in the Sky. Good luck.
I hate to say this, but computer science is applied mathematics. If you're not up to taking higher level math courses then you're not going to be a computer scientist. If you really want to go into gaming but don't want to learn math, then I hope you can draw as concept artist may be your only other hope to get into the design side. Otherwise, you're going to have a good time in college trying to figure out what you're gonna be when you grow up. Or, you just won't grow up. Either way, mission accomplished and you get to choose how much math you take. Enjoy!
I can't get through my day or even an hour without my ability to apply numbers to lifes situations, factor in numerical modifiers and spit out ratios and percentages of probable outcomes and their forks. I find it keeps me about 10 steps ahead of the less evolved monkey boys around me.( I've shoved a few grifts down more than one confidence mans throat). I don't seem to be able to quantify my method well enough to teach my daughter though, and it makes me sad. Perhaps this will pop up in further generations as my contribution to mankind, perhaps it belongs to me alone. Any of you, thus afflicted?
*Repent!Quit Your Job!Slack Off!The World Ends Tomorrow and You May Die!
If you want to do graphics, databases, data mining, machine learning, networking, etc, etc, you need a good understanding of maths and not just basic maths. You need calculus, discrete maths, probability, statistics, logic, first-order logic, linear algebra (++ if graphics is your thing), trigonometry, and more.
If you want to be a code monkey desk slave, do not study maths.
If you do not like maths, perhaps consider a career other than computing.
Contributing to those projects, or using those as SDK?
The former likely requires quite a bit of math depending on what exactly you contribute to, the latter can be done with very little math.
Ours brains develop pathways according how they are used. When You study Math,isnt just for use as a tool for some situation only,but to create more and more complex pathways in your brain that will help you to get solutions and you dont need solve a equation or 2+2 for that,but need to have created in your young times,a well creative, logical, spacial ,verbosal ,memory trained and mathematical brain.
After reading all of the comments thus far, I see the discussion is stuck in a head-butting stalemate.
Much like religion, mathematics will always have people arguing over the issues of its relevancy rather than actually working to find a true solution. No pun intended.
Behind a firewall at work, so posting AC.
I am not a computer programmer. I have had 2-3 classes in programming. I am a math and physics major. I have a BS in both.
However, my day job has come to involve a great deal of programming. And I can safely say that I have used Discrete and Abstract Math weekly, in addition to Analysis techniques that I learned in undergrad. (all requiring calc 3)
-Any time you step back and need to calculate an efficiency rating (my boss loves this), you will use higher math
-Any time you need to optimize a problem (often saving hours of your life), you will use higher math
-Any time you get into the guts of a program, you will use higher math (Fourier or Laplace transform errors, Signal analysis, Analog to Digital errors, etc.)
I have found that even with very light training in programming, I can follow high level programming ideas primarily because of the vast knowledge of math that I have. Example - I built a SVM from scratch in about a week on a whim. I then found a better SVM program (shogun SVM) and switched to that. Am I the best code monkey in the world? No. But I can optimize existing programs. I can think through a program and find good ways to do things - and this has proven just as useful as knowing how to manipulate libraries and do OOP.
If you plan on being a programmer or doing programming for a career, I would recommend that you get as much math under your belt as you can. You can get away without it, but knowing it will make you a better programmer.
Plus, calculus holds possibly the 2 most powerful tools humanity has ever known - the concept of the derivative and the idea of integration.
For the software I ship, the math is limited to: add one, subtract one, multiply by two, divide by two. But I also have to write software used internally to analyze performance and scalability. For that you need a statistics class. As for the calculus and what-not, even if you don't use it directly, it's a good way to learn how to think straight.
Most people use math every day, even programmers. The only question is..... How difficult is the math? Incrementing counters is trivial, finding an offset in memory based on an index and object size a wee bit more difficult.
Consider this small example. You have a large box and a small box of cereal. Which one costs less per ounce? The grocery store probably does this math for you, but, for some products, they label the sizes using diferent units (such as cost per ounce and cost per quart or pound). Now this should be stupid simple math, but for many people it is a problem. Now, make the problem more difficult, throw a coupon into the mix. Oh my.
I worked a small job where an average was needed for some data. An average was also needed for various subsets of the data. So, first the average was taken on different portions of the data. Next, the total average was obtained by averaging the averages. Do you see the problem? If I have 1000 things that have an average weight of 10KG and 10 that have an average weight of 20KG, the average weight of the 1010 things is not 15KG, it is closer to 10.1KG.
At the end of the day, you use the tools and skills that you have. Although I will admit that some tasks are not likely to involve much math, you will use the skills you have to solve the problem that you have. I recently worked a project that handled a "double blind auction". To solve the auction, I was required to intersect a set of line segments. This is really very simple math if you think about it, but it turned out that based on the input numbers, the system was sometimes ill conditioned. I happen to know about ill conditioned systems and I know how to best solve them, so I used a solution mechanism using full pivoting and the rare edge conditions started working.
I actually don't use a lot of geometry in my job, but I use the basic skills of logic and proofs that I learned in geometry. I don't often solve algebraic equations but I find myself tutoring my employees in the logic of intervals. Calculus was a drudge and I almost never integrate a function, but the concepts I learned about functions I use every day. I'm not sure you can use functional programming without exposure to calculus. Almost every math subject has an ulterior motive. Geometry is there to teach you logic. Pre-calculus is to teach you about functions. Calculus is the first math where you're introduced to infinity and infinitesimal entities. Without that math I'm not sure your mind has expanded enough to work for my company.
I don't expect programmers to solve differential equations in front of me, but I doubt their technical literacy if haven't done it at least once. You don't have the tools to manage complex projects without knowing about diff Q. Likewise, you can't be a computer scientist without discrete math -- you just wouldn't have the mental tools to address the subject. Sure, you could stumble along, but you would just be depending on someone else who did the math.
Even accounting and things like data compression in serving up web pages uses statistics.
In your web page test, or accounting system test, how many transactions do you need to run, how long do you need to run, to have a valid performance test?
When I got out of school, I got into computer systems design (things like the Commodore Amiga 2000)... not a great deal of complex math in there. But I actually did double major, EE and Mathematics, so I had that toolbox of stupid math tricks available, once things got a little more demanding than just calculating worse-case timing and power budgets.
Which they did. One thing I did, which many folks think is cool (and it is, particularly if you don't care about getting paid that well)... I got into startups. When you're at a startup, you find you wear just about any hat that fits, and you also get pretty good at tailoring those that don't. Having a proper background in math will definitely help you at this. And it's not unusual, particularly if you're a hardware guy at a small startup, that you're expected to solve EVERY possible hardware problem... or at least know it well enough that you can solve things with the occasional help of a consultant.
So since Commodore, I've done control systems and sensor systems (robotics), digital radio systems (R/C cars, more robotics, general purpose mesh routers). I wrote an NTSC decoder for a software radio.... all sorts of different math in there (FFTs, filters, etc)... and knowing math well enough is critical to building things like this well... you can find dozens of books on the analog TV signals, but doing that all in software, you really need to understand things. I've also been working in cryptography, more SDR, and other kinds of signal processing... even wrote a few audio plug-ins for my own use, which may one day get released somewhere.
Of course, with great tools like MathCAD, you may not find yourself actually "doing" the math they way you might have back in school. No pencil and paper, you have tons of primitives that do complex things for you. But you need to understand how it all works to able to use such tools.. and without that knowledge, you'll be unable to adapt. The other guy who wants that cool new job won't have that limitation.
And in fact, the very best thing I learned out of my more-expensive-than-Dad-had-budgeted college (and those extra ten years of monthly payments) was the ability to adapt. The specifics we learned in the early 1980s (Pascal and LISP programming, TTL logic, etc) all but vanished. The big ideas don't. An education shouldn't worry too much about today's specifics... you have no idea today what kind of engineering you'll be doing in 5, 10, 20 years. Even if you don't change jobs, the nature of the work can change out from under you. I went from HW design last summer to a software project (and the need to learn three new languages), then back to hardware this summer -- with some pretty deep mathematics in the mix now.
-Dave Haynie
Games sure. But also embedded control systems. Robotics. Cryptographic systems. Signal processing: digital video, digital audio, software radio, etc. I think the need for "real math" is on the rise.
-Dave Haynie
Learning math helps you learn to solve problems, so no I don't use calculus every day, but I do solve problems every day. Discrete Math, Calculus, and Physics in my opinion are some of the most important courses a software engineer can take. Programming languages are easy to learn, problem solving abilities come from LOTS of practice.
"Programming" covers a lot of areas. I work for big pharma as a statistician in clinical trial drug development, but our programmers need a statistics background to be effective. They don't actually use math daily, but have to understand statistics and what the statistician is asking for. So they need to be familiar with math through calculus, and then several basic and (perhaps) advanced statistics classes. Our most effective programmer has a PhD in statistics, and boy, does he ask appropriate questions.
I've led major defense contractor teams in business development and business operations.
Algebra is used at work daily. Statistics at the college level is normal, and while most folks don't crank the numbers, all are expected to have intuitive grasp of the numbers cranked out by others. If you have NOT mastered at least one course in Stats at the college level, you cannot understand modern business metrics and reports.
Geometry and trigonometry are regularly useful at home in making volume estimates, figuring out where you can put that satellite dish, etc.
Math's not essential to home life, but a basic understanding of the normal high school requirements (Alg I and II, Geometry, and basic Trig) sure makes a LOT of things much easier.
Math--Calculus and beyond is a training of the mind. Americans have been so dumbed down and lazy that they can't even recognize the fine tuning of thinking and development of the mind. So, if your intention is to stay as dumbed down as possible -- to do as little as you possibly can--then don't take any more math.
There are college majors in business in a local SD college that include calculus as part of the curriculum with the end result to run a hotel. It's been put there at the request of hiring managers IIRC. They request that the students take calculus to be considered and admit that there's nothing in the job tasks that remotely require it. They claim if they can tackle that course, then they can tackle the demands of actually running a hotel. I don't know if that is true. Sounds like they just want to see if the prospective student will jump through useless hoops.
I am retired now, but as a computer scientist (by degree), programmer and analyst and sysadmin (by functional activity), math higher than algebra does come in useful.
Even if I didn't directly use statistics or calculus but once every few years they provided a great understanding of what I saw in information I had to analyze to solve workplace problems.
Yes, there were the programmers around me that thought it was all 'hocus pocus', but they were also the ones that brought their problems to me to 'do my magic' whenever the analysis was above their level of understanding.
Even digital systems design allowed me to develop of optimization algorithm's for tax problems for a couple of fortune 500 companies during my career. It took a couple of months to come up with a couple of lines of code (and 20+ pages of explanation so others could maintaining it after I was gone).
Even after marrying a geologist/geophysicist who now teaches horseback riding to beginners, we have found education adds to the tapestry of life. Whether it is math, history, theology, music theory, rocks, or anything else. All education is good. ... Much of it will not generate a $$ of income. Some will pay off better than any slot machine you have ever seen.
I have found teaching my kids that posing problems that they are interested in solving and let them get frustrated helps. Then introduce 'tools' (whether it be math tools, or a screwdriver) that help them solve the problems. A few times of this, then they start learning that learning about the 'tools' it takes to address lifes problems isn't so 'dry' after all. ... Thankfully we found a college that uses that concept for my son. He now is a MechEngr, is in a couple of 'startups' but has a 'job', and is a partner in a coffee concern in the Boston area. ... I attribute part of it to luck, part of it to training, and most of it to learning to love learning about so many areas.
Once again, learning is never lost. Education can't be taken away even if you are 'fired'. All education adds to the quality of life. ... Oops ... sorry about preaching. But this is obviously important to me. I hope it helps someone else make good decisions for themselves.
... "When you pry the source from my cold dead hands."
I work (advanced) tech support. I use math all day but mostly statistics and algebra.
I use math everyday. Sometimes it's as simple as trig or algebra, but it can also be advanced calculus to liner algebra. As I'm sure you've already seen you might understand a problem, and even understand a way to program it. For instance solving a simple equation without algebra is very easy by trial and error, and is very easy to program, but understanding the math will improve your understanding and may influence your approach approach.
Many things are very easy to learn after school: new programming languages, new technology, etc... However, advanced math is more difficult to learn on your own. I'm a software engineer, without mathematics anywhere in my job description, but it's the one area I feel I could have had more education, and I was a math major in college.
Take as many math classes as you can!
I do system modeling, architecture and design, capacity planning, and design for high availability, high capacity, high performance, continuous operations,, and occasional programming. I am not in a research organization. I am in the world of commercial IT. Most of my career has been in technical sales.
I use simple algebra all the time. Workload growth over time implies exponentiation. In the last few years I have used logs and even quadratic equations in system analysis and modeling.
I use Boolean logic, AND, OR, NOT, XOR, IMPLIES, DeMorgan's Law etc to construct and understand & debug other's complex if statements and hierarchies of them.
I use probability to understand variations in workload coming in to servers, their business (busy-ness), and how to combine multiple workloads together.
When considering servers (machines and programs) capacity and responsiveness, I use queuing theory, and consider where things get buffered and queued along the way and at the layers between clients and servers.
I use graph theory to be able to understand network flows, linkages between relational tables, multiply linked lists, and graph databases.
When modeling communications links or systems availability, with lots of things with very low error or failure rates, I do binomial expansions and sometimes Maclaurin or Taylor Series.
I do most of all this in spreadsheets, but sometimes the provided functions are simplistically written, so they cannot handle combinations of large and small parameters. Then I had to substitute a better algorithm.
I am a professional computer programmer, and I can say that 90% of my job is math, from algebra through calculus. I am moving into game design, and I may have to take a few higher math courses to keep ahead.
I'm going on about 15+ years in this "field". I am currently on my very first project that ACTUALLY implements a calculus formula in code. I - personally - am not doing ANYTHING special. I know colleagues who are doing some really cool stuff - but even that is not as cutting-edge as some things I am seeing out there.
I would say that there is a whole wide world of computer "work" (including coding) that does not involve math higher than algebra and trigonometry. That's me. That's most of us.
But there is also a whole wide world that most programmers and integrator-types don't even get exposed to - where intimate knowledge of very advanced math is very necessary. Hardware and system design. Engineering. (I've even been in large projects where we used calculus to estimate cost, and help the manager project budget). Spaceflight. Search engines. AI and machine learning.
Notice that the internet has not REALLY changed much since 1998. Seriously.
There's some very cool gadgets that come out once in a while. But has anything REALLY REALLY changed?
I've seen some pretty cool innovation in machine learning over the past couple of years - self driving cars and quadrotors, and things like that. But I don't think that enough people are doing this. The amount of people who have this kind of expertise are so few and far between.
I think that if we had a lot more people working at these higher levels, especially with more high-level math, in the fields of applied AI and machine learning, we would be seeing a lot more innovation like this - rather than "innovation" like: social network websites - (which is really 1980's Compuserve - warmed-over, on faster hardware).
I will absolutely point a finger of blame at our society's idiotic approach to math education.
We should be starting to teach our kids calculus and linear algebra concepts when they're 12. They should be pretty much through algebra by then. ALL kids. We shouldn't slow-track kids out of the field, who are slow to grasp the hard concepts - we should double-down on the effort needed to teach them. (ie. more classtime, not less).
In our system - if kids don't demonstrate competency in math at age 12, they're slow-tracked into a series of remedial math classes, and they end up graduating without any exposure to calculus in secondary school. That's insane and idiotic. Now: if the kid doesn't WANT to track into a technical career at that time, that's fine. If the kid DOES want to - the system shouldn't shut them out.
I do make occasional use of Algebra, Trig and Geometry even in daily life. But I've never once used MLA or Chicago citations outside of school. And being that I absolutely despise writing essays and reports on subjects I care little about, and in the real world I hire people to do that crap for me on the rare occasions I need it. It was the biggest limit to my education as I actively chose courses with as minimal writing requirements as I could and avoided writing intensive courses like the plague.
Math doesn't unnecessarily limit student's educational choices. It's the structure of degree programs where half or more of the required coursework is irrelevant to the field the student is studying to enter that limit people's educational choices and most of the skills learned will never be used. Math is just the most prevalent example. If someone is bad at, or dislikes math, they're most likely going to choose a degree program and elective course work as light in math as possible or avoid college entirely. Ditto for those who dislike writing, public speaking, history, science or some other task. That all degree programs are filled with such courses and requirements is the biggest limitation to education.
Either 0 or 1, depending on what I'm doing. Usually 0 but occasionally 1.
Protip: Always write to a singular audience. If you want to pluralize the audience, use first-person ("How many of us...?").
Here's a problem I've seen asked several times:
Calculate the number of office hours between two given times. Office hours are Monday - Friday 8.00 - 18.00.
How would you solve this in an efficient way? Actually, knowledge of integration might be useful.
You haven't had enough math. To solve integrals, Fourier series (also called Fourier Integrals) are commonly used. Pi, sine, cosine and other trigonometric values are computed using Fourier series. A Fourier series is a discreet incremental integral. I don't know these reductions off the top of my head but I know where to find them and how to implement software for them. You are not likely to find general Integration functions in any language. You have to know the math. If you are doing UI, you probably don't need to know this stuff. Even for games, this stuff is there, in the libraries (especially physics libraries). Fourier series (and other methods, I would guess) can calculate these Integrals to any number of decimal places that you would like. This can also be done with pencil and paper but it is extremely tedious.. Fourier converts an Integral into a series of discreet computed values. Granted if you need to solve an integral that has no Fourier solution, very difficult.... A good reference for this is the "CRC Chemical Book". Not sure of the title or even if it is available any more. I've had mine for decades.
And this is why there are so many poor programmers and so much poor code out there!
If you can't determine the O notation performance of an algorithm, even if it's to count beans, how can you expect to write decent code? If you can't collapse an algorithm from exponential to polynomial time you're going to be a poor programmer.
If you want to work as a software developer in financial services (some of the better paid jobs) you'd better understand advanced calculus!
Personally I write cloud based code for ebanking apps for a job and image processing code for a post grad degree. While the first isn't particularly demanding of higher maths skills, I still need them from time to time.
The second would be impossible without a fantastic understanding of linear algebra, matrix math, tensor calculus and high order geometry.
So can you get a job as a programmer with minimal math skills? Probably. Is it going to pay well or lead to promotions? Probably not.
I have more of a robotics/embedded systems/physical computing background, but I can tell you calculus is all over the effing place there.
The PID controller is an integral (pun intended) part of everything from autonomous cars to thermostats - it stands for Proportional, Integral, Derivative. Calculus is a very cool part of these things, although, when implemented in programming, it won't look very much like calculus. A knowledge of the concepts really informs your understanding of how these things work, though.
Also, if you ever want to program an application that does significant motion control, think wiimote or smartphone apps (and you don't have a nifty library that does all the thinking for you) you'll need to know calculus to be able to turn your accelerometer readouts into velocity and position information. Same thing for turning gyro data (roll rates) into rotational position or acceleration data. Missiles, UAV's, spacecraft and a bunch of other things use these principles - look up IMU (inertial measurement unit) , or AHRS (altitude and heading reference system).
You can see here that calculus is a very fundamental part of understanding physical motion and behavior, so I imagine that if you ever get into the dirty work of designing a physics engine of any level of realism calculus could be extremely helpful. Even if you don't explicitly take a derivative anywhere, it helps you have a better understanding of things that change continuously, and even just be mindful of the way various forces operate.
Finally, Calculus is just goddamn beautiful. I'm no expert at it, but if you've got any interest in things like programming, math, and science, it is something you ought to be familiar with just because it is such an elegant and astonishingly simple way to understand so many really complicated things.
This goes for all the math you can stand; one should never quit one's mind of mathematics:
Having a robust understanding of many mathematical concepts is an extremely useful asset throughout life, regardless of one's studies or eventual job. Considering the massive impact and implications a thorough education in mathematics, or the lack thereof, it does not suffice to simply say, "I have never used that math in my... "I never used any of those formulas to calculate... "It may help to have a few math courses under your belt..." or whatever and be done with it. I know everyone is only concerned with whether or not they will actually be asked to perform such calculations by the entity(s) which hand them a pay check. The benefits to cognitive development, the enormous impact on critical thinking skills, spacial/dimensional awareness - there are myriad reasons which give all who seek employment in computer science good cause to pursue a wholistic body of mathematical knowledge and understanding.
The activity of programming is the art of solving problems. This ability is learned by math. In fact a program is a theorem..... so learning to prove help find algorithms and programming. Many others aspect of programming are related to math : abstarction, logic, modeling, deducing, ....
Sometimes I iwonder if my self and all of us are the unconscious agents of the integers, that it is they who use us
Today, I do SQL and data bases. I really use my set theory, logic and stats every day. I started off as a FORTRAN programmer and used my algebra every day. When I did COBOL, I wish I had taken some accounting courses -- and so did my clients :)
I use Excel
Thank you for the especially informative review, I'll keep that in mind!
- Anonymous Reader
I try to remember to count the shoes before i go over to a girl on the beach.
I've used "type-lifted" calculus a lot, in the sense that many data structures are expressed as fixed points of polynomial functors. A zipper on a data structure is the derivative of the functor.
http://en.wikipedia.org/wiki/Zipper_(data_structure)#Zipper_contexts_and_differentiation
How many of you actually use pushups?
Most programmers are doing low level programming works which may only require high school level math. However there are high level programming works that require not only college level math but also graduate school level math.
...etc.
They are graduate school or even beyond graduate school level math.
..etc) are programmed with advanced math.
The simplest trading model: momentum trading is based on the second derivative which you can learn in Calculus.
..etc.
You can see why.
For example, if you try to program a good way to compress images and videos. You try to get the best compression ratio so you can have a smaller file to save storage space (think how much it can help Youtube). You try to send the best compressed video to a remote location and decompress it with near original quality (think of Apple Facetime or Skype video). To do well on image compression you need to know a lot advanced math such as Fourier series, Wavelet,
Many Wall Street algorithmic tradings (robot trading, high-frequency trading,
Many firms like to hire Math Ph Ds and then teach them how to do coding. They don't hire high school coders and then teach them Fourier series, Wavelet,
As a high school student who is interesting in programming, you can:
1. Get a programming job after high school, stop learning college and graduate school math. You maybe able to find a job and happy with your life for a while. But when you are 40, you can be easily replaced by some young high school graduates.
2. You learn a lot math including graduate school math. Do some high level programming with your advanced math knowledge. You may invent some new computer chips, get some patents, and retire at the age of 45.
It is your call.
It doesn't matter much what the code is, I need maths and I don't even think about maths when I use it. The reason is because when I write an algorithm or data structure, I need to decide what algorithm or data structure I will use and to make that decision I need to be able to compare the various costs of those choices. If I don't have a good handle on the difference between N, N^2 and N.log(N), then I can't do a good job of writing code. What's particularly useful is that I don't have to think about what that means, I just know it.
One of the adages I feel has the greatest validity in technical business is, "The key to sustaining and advantage is to go where others can't." It's true that programming certain popular things doesn't require an understanding of much math. It's also true that math is critical tool for modeling phenomena in the real world. You have to ask yourself whether you want to be someone who CAN'T do that. Modeling phenomena in the real world isn't just for scientists. Its part of finance, operations, geography....
Why would anyone look at how much easier it can be to learn in today's world and chose to learn LESS fundamentals than their predecessors? How do you think we lost the engineering knowledge of the Romans and the medical knowledge of the Greeks for 1000 years? My bet is that someone looked that a trivial moment in their culture and said, "Why do we need to know that?"
Every rule has more than one consequence.
If you can't handle the math, someone else can. And they will be better than you at whatever you do.
Understanding of advanced mathematics, real full-blown comprehension of it (even just some of it) completely changes your outlook on every aspect of your life. I mean, imagine if you had never learned multiplication - your life would be pretty different. For example, after you join your sorority/fraternity (which sounds about on track for you) your understanding of multiplication will help you determine exactly how many more kegs you will need when the next sorority/fraternity over crashes your party. The level of the mind-jobs increases proportionally from comprehension of the basics because math and specifically logic underly the structure of reason itself. Make it to topics in set theory and begin contemplation of the continuum problem and then explain to me how irrelevant concerns about the validity of your math studies have become.
The series of mind enhancements that you tack on for the low cost of doing your math homework will then get you closer to perceiving a thing that eludes the majority of people: reality. Having a better understanding of reality tends to help you compete against your coworkers, aka the zombie hordes.
So, suck it up slacker. Do your homework, quit whining, or perish under the crushing competition. If you don't somebody else will and will beat you into submission with it. Anything less will be settling for mediocraty, and at that point you may as well major in business.
Most mathematicians and professors have always done a wonderfully horrible job at presenting the direct applications of maths. This applies directly to every single maths teacher I had. Every so often a pupil would ask "why do we need this" and was greeted with "stop asking me that question" or (combined with) "you don't know enough to understand yet" ; highly arrogant and unhelpful.
That created a lack of interest and drove me to that part of computer science where maths simply isn't that important : specifications, requirement engineering, web and UI development, script writing and bug fixing in network driven applications. I leave the maths to the mathematicians and those that understand it. I stick to what I do well.
I used complex variables to do circuit analysis when I worked on a software GPS receiver and also used Fourier transforms and vector math. In addition, I've used numerical methods to extrapolate data. But in both these cases, it wasn't computer programming that required me to use the math; rather, it was the nature of the subject area.
Check out Chad's News
IMHO Mathematics is simply a tool which you either have at your disposal, or not. Since maths is really a language for describing the real world, having it available makes a lot of problems a lot simpler to solve.
So you don't HAVE to study maths, but studying it will simply add a tool to your belt for the many problems you are going to face in the real world!
I personally think that it would be a serious mistake for any high school student, no matter how talented you may be as a programmer to assume that you already know enough of anything to support the broad range of career and entrepreneurial opportunities you will have I the future. In the better public and private schools, higher level math is being taught In progressively earlier grades and every student should make every possible effort to get as much of that instruction as possible. What if you get to college and realize that a field such as computational tissue engineering is what you really want to do and with the entrepreneurial opportunities available in this field, plus the university connections that would be open to you, you most certainly would not want to be shut shut out of your chosen field because you neglected to go far enough into math to be qualified for the higher level courses you will need. It must be understood that the same Mathematics underlies every field of science and engineering and given the accelerating rate of change now occurring worldwide, you are making a serious mistake if you think that you know now what you career path is going to be even a decade from now, or just how much math is going to be required for you to achieve goals in fields that may not have even beein invented yet.
Calculus isn't strictly required for computer programming, but the best programmers I've met know it cold. The reason for this is simple. Math is about solving problems analytically. Computer science is as well, although much more in an applied way. The best programmers solve problems analytically first, drawing on their analytic skills, while never losing sight of the application.
Linear algebra is an important skill for programmers looking to get into gaming. It gets heavy usage in the APIs for 3D applications and rendering, for example.
...particularly involving dynamic systems or electricity... calculus, partial fractions, laplace/fourier transforms, etc are a must
I've used calculus and trigonometry for UI animation with some regularity. Sinusoidal easing makes for very comfortable and natural interaction, for example, and it takes a combination of calculus and trigonometry to code it properly. For that matter, it requires familiarity with both to even think of using the technique. So, yeah, it's worth knowing your math even if your CS work is just polishing user interfaces.
It seems people miss the point of calculus quite badly. Calculus allows you to prove or simplify quite a lot of trigonometry. Numerical calculation methods also depend heavily on it. Your entire computer is the work of calculus being applied to physics. So do pay some attention to it and you might learn a useful thing or two. On top of that your game engines also need realistic physics. Good luck doing that well without a three dimensional field of vectors.
But where advanced mathematics really show their real value in my personal opinion is in electronics. Analog electronics, especially high frequency and RF systems can't be described or even approached without it. All the "rules of thumb" find their backing in advanced math. Even something as simple as the Fourier transform requires calculus to explain correctly. And lets not forget about our friend Maxwell...
In short, in the current society where electronics play a major role in almost any device it might be a good idea to be able to approach the subject. But you need calculus for that. A nice bonus is that calculus has helped me the past few years in reducing the amount of taxes I pay. Cause calculating an optimal solution to a problem is also something calculus is an excellent tool for.
so, dont take it as professional advice, i don't know how much actual math you need when using libraries but if you were to do some 3D you'd need a serious chunk of matrices and geometry at least before you get a single dot in screen where it has to be
Free speech was meant to be free for all... how can anyone grow up in a nanny state ?
When in college I was struggling a bit with my Calculus homework and asked my professor if I needed to rethink my career. He said "If you ever get a job and they ask you to do that quit on the spot". When I asked why they were torturing me by making it a required subject I was told it was to help develop problem solving skills.
Any skillful programmer have at least stronger abilities in some mathematical aspect.
A Jedi must have the deepest commitment, the most serious mind.
Hmm? What he was doing. Hmph. Adventure. Heh. Excitement. Heh.
A Jedi craves not these things.
Only a fully trained Jedi Knight, with the Force as his ally, will conquer math.
Most of the math in the world is arithmetic, a little algebra and geometry helps a lot.
Higher than that, is seldom needed in normal things in life, but I have found calculus and understanding 3D geometry very useful in programming for companies that don't even know they have problems that are more easily solved using techniques from those spaces.
IMHO, education is never lost. More education even if I 'never use it' is still better. Sometimes it just helps clarify what others view as noise or 'magic' in the world.
In high school I almost gave up on math in Algebra I. After taking a graduate level statistics class as an under grad at a good college, math finally got through that I had had enough, both mentally and practically. But it still adds to my quality of life as a retiree, I still work on projects out of my comfort zone, just to keep expanding my interests.
... "When you pry the source from my cold dead hands."
Only when you don't want to guess, unless counting.
Actually, discrete math is not exactly a tool to do math on the computer.
Numerical methods (of solving differential equations, computing integrals) are algorithms which could be considered part
of discrete math, but a small part.
" I haven't seen any clear way to calculate say an integral using something like c++ or c#.." Usually C++ is not used because
of overhead, not justified in repeated of same, relatively simple, code.
People use C or Fortan for that.
You will find such spftware e.g. here: ... ... engine for charts and mathematical routines for Approximation, Interpolation, FFT, ... PARI is also available as a C library to allow for faster computations.
#
List of numerical libraries - Wikipedia, the free encyclopedia
en.wikipedia.org/wiki/List_of_numerical_librariesCached - Similar
You +1'd this publicly. Undo
The NAG C Library is a collection of numerical analysis routines developed by the Numerical Algorithms Group which can be called from user applications
#
List of numerical analysis software - Wikipedia, the free encyclopedia
en.wikipedia.org/wiki/List_of_numerical_analysis_softwareCached - Similar
You +1'd this publicly. Undo
It comes with its own programming language, in which numerical algorithms can be
In the network world, the only math you'll probably ever have to do is IP address/Subnet calculations
It's basic math... I took calculus in high school and in comparison subnetting calculations are child's play.