Programs Am I intelligent enough for Computer Science major?

AI Thread Summary
Concerns about intelligence and math skills are common among prospective computer science majors. A C in calculus and a 540 SAT math score do not disqualify someone from pursuing this field, as discrete math is often more relevant to computer science than calculus. Success in computer science relies more on study habits and motivation than inherent intelligence. It's important to focus on personal interests and enjoyment in the field rather than external validation. Developing programming skills, particularly in C or C++, can provide a strong foundation for success in computer science.
annoyinggirl
Messages
217
Reaction score
10
I've always had an inferiority complex. In high school, i felt very insecure about my looks and now i feel very insecure about my intelligence.

When i was about 5 and learning to count, my parents told me that I sucked at math, so I am very insecure about my math ability, even though i know that I'm probably average at it.

I told my classmate that i am going to major in computer science, and she told me that I shouldn't because I got a C in calculus (in which I started slacking towards the end). I also have very poor pre cal foundation.

I have no clue about my abilities, but I'm guessing that I'm probably not very good at math or very intelligent. Now I feel very insecure about my ability to hack computer science major, ultimately fail in it. How much intelligence is needed to complete Computer Science major?

My SAT in math was 540 but i barely studied for it. Is that good enough for Computer Science major?
 
Physics news on Phys.org
It is absolutely good enough. The kind of math that is more germane to CS is called Discrete Math and it is quite a bit different from Calculus. You may find it clicks with you.

You can do quite well in CS with a weak background in Calculus (although eventually you should shore up your Calculus abilities!)

The fact you're asking all these questions indicates you are thinking your life choices through very carefully. That is a clear mark of intelligence. Forgot what other people say based on their various preconceptions. You are only responsible to yourself.
 
  • Like
Likes 1 person
It's impossible to judge properly from this forum.
You need to ask a college - let them tell you if you are good enough or not.
Most colleges will publish their entry requirements for various courses. Look and see.

Note: afaict the SAT score bodes well.
CompSci does not normally require calc, and any you may end up needing you can pick up when you need it.
 
  • Like
Likes 1 person
analogdesign said:
It is absolutely good enough. The kind of math that is more germane to CS is called Discrete Math and it is quite a bit different from Calculus. You may find it clicks with you.

You can do quite well in CS with a weak background in Calculus (although eventually you should shore up your Calculus abilities!)

The fact you're asking all these questions indicates you are thinking your life choices through very carefully. That is a clear mark of intelligence. Forgot what other people say based on their various preconceptions. You are only responsible to yourself.

Oh thanks! :D Is calculus used in computer science major at all? Can you give some examples of situations of which calculus is used for programming/CS?
 
Last edited:
Sure it's used. Any computer program dealing with dynamics (that is the movement of machines or anybody for that matter) will use calculus but often working out the equations is not the domain of the programmer. It depends a lot on your speciality. I know programmers who haven't cracked a math book in ages and others who are neck deep in the stuff. You have plenty of time to play to your strengths.
 
I don't think it is your intelligence that you should be worried about, but rather your study habits. Twice in the OP you have stated that you've "slacked off" or were too lazy to study. This is something that absolutely needs to end. It might work in high school, but it won't fly in college at all.
 
So we are considering "computer science" now? What about Econs at UCB or Davis? That has gone out of style? Or what about Math/Applied Math/Statistics? That's old news by now? What's next in your "shopping list"?

I can certainly understand the need to explore and find out about stuff. But at some point, I get the impression that this is like a kid in a candy store, where everything is fun and tasty, and there's a place that you think will cater to it. I get a sense of deja vu when I see someone going in several different directions and somehow seeking "validation" from other people for what he/she should do.

https://www.physicsforums.com/showpost.php?p=4577746&postcount=13

Zz.
 
I would encourage you to just take a look your college's catalog and see what courses that CS majors are required to take. Then look up those courses in the catalog and read their descriptions. Do google searches of certain topics that catch your eye and read about them. Look up youtube videos of lectures. Look at the electives that CS majors are allowed to take and do the same with them. Then you can decide whether or not it seems interesting to you or if you are "intelligent" enough to do well in those types of classes.
 
Have you ever programmed? What sorts of languages do you know? Why do you want to do computer science?

I would seriously suggest learning some C++ and code a few simple projects on your own before seriously considering computer science.
 
Last edited:
  • #10
Start learning programming ASAP, in C or C++, NOT Java or Python.

Then, when you get to the following two topics:

•pointers
•recursion

See how well you grasp them AFTER a sufficient amount of practice. Studies have shown that these two topics are good predictors of CS success. Don't be discouraged if you aren't comfortable with these topics right away--pointers took me a while.
 
  • #11
TomServo said:
Start learning programming ASAP, in C or C++, NOT Java or Python.

Then, when you get to the following two topics:

•pointers
•recursion

See how well you grasp them AFTER a sufficient amount of practice. Studies have shown that these two topics are good predictors of CS success. Don't be discouraged if you aren't comfortable with these topics right away--pointers took me a while.

It's not for nothing that languages like Basic and Pascal were invented. C and C++ are dangerous minefields for anyone not already quite disciplined and competent. Even pointers which aren't so difficult, when you start thinking about what const means, for example, can one return a constant pointer? It gets complicated pretty quickly.

As for AnnoyingGRL, I think she needs to fill in the precalculus gaps, that math WILL be needed for sure.
 
  • #12
I was just tutoring a guy yesterday who is apparently struggling in calc 2, but he gets it pretty quickly, with just a few comments from me to get him unstuck. I see that just a small difference could take him from struggling to doing ok. I know professional mathematicians who got a C in calculus or even failed it. Doesn't always mean you're not smart. Just that you're not used to it.

I think it was only somewhere in grad school that I got to the point where it felt like I could add it to my list of subjects that were easy enough that I felt like I was just born knowing it (it's not really a self-contained subject, so in broader sense, I think very few people understand it on an extremely deep level, even if they can do all the problems in a basic textbook without thinking). The first time I took it, I did okay, but it wasn't easy.
 
  • #13
Why does everybody act like learning C/C++ first is too hard? They were my first. Java/C# are too overhead-heavy to be good first languages, IMO, even if they seem easier once you know OOP basics.
 
  • #14
TomServo said:
Start learning programming ASAP, in C or C++, NOT Java or Python.

Then, when you get to the following two topics:

•pointers
•recursion

See how well you grasp them AFTER a sufficient amount of practice. Studies have shown that these two topics are good predictors of CS success. Don't be discouraged if you aren't comfortable with these topics right away--pointers took me a while.

I see. I've read something similar before on another thread. Just out of curiosity: why C++ or C instead of java or python? i was planning to take C++ first anyways, but I'm just curious why C++ over Java or Python. Are those languages easier?
 
  • #15
annoyinggirl said:
I see. I've read something similar before on another thread. Just out of curiosity: why C++ or C instead of java or python? i was planning to take C++ first anyways, but I'm just curious why C++ over Java or Python. Are those languages easier?

C++ forces you to encounter pointers and memory management head on. C++ is, in my opinion, a very difficult language to learn, but it teaches you a lot. I think it is the best language to learn first, since the transition to other languages will be simple. The transition from Java to C++ can be disastrous in terms of improper memory management (heartbleed anyone?).
 
  • #16
What ZombieFeynman said (except C++ isn't hard).

I recommend "Engineering Problem Solving in C++," by some Etter or something.

Did I say "recommend?" I meant "ORDER"! Get crackin! I also strongly recommend installing Linux, it's a much easier programming environment. I recommend Mageia.

EDIT:

Here:

https://www.amazon.com/gp/product/0136011756/?tag=pfamazon01-20
 
Last edited by a moderator:
  • #17
TomServo said:
What ZombieFeynman said (except C++ isn't hard)

Perhaps it is true that hard is not the best word. Still, I think that the syntax of C++ is not as simple as many other languages.

I don't think it is necessary at first to buy a book to learn C++. One can simply go to www.cplusplus.com to learn the fundamentals.
 
  • #18
micromass said:
I don't think it is your intelligence that you should be worried about, but rather your study habits. Twice in the OP you have stated that you've "slacked off" or were too lazy to study. This is something that absolutely needs to end. It might work in high school, but it won't fly in college at all.

I very much agree with this.
 
  • #19
member2357 said:
I very much agree with this.

Ditto. Mega-ditto.
 
  • #20
annoyinggirl said:
I have no clue about my abilities, but I'm guessing that I'm probably not very good at math or very intelligent. Now I feel very insecure about my ability to hack computer science major, ultimately fail in it. How much intelligence is needed to complete Computer Science major?

It sounds like you may be running into the stereotype that girls can't excel in STEM fields:

http://www.huffingtonpost.com/alici...-gap-encouraging-girls-in-stem_b_4508787.html

I would not ask how much intelligence is needed for a CS degree. Rather, you should ask yourself whether you might enjoy CS as a career field.

You should not be listening to people (including your parents) that you can't achieve a goal because you're not smart enough. When you listen to these people, it just sets you up for failure.

You need to change your entire mode of thinking from, "am I smart enough to achieve this goal", to "how can I achieve this goal that I've set for myself", and then just do it.
 
  • #21
austinuni said:
It sounds like you may be running into the stereotype that girls can't excel in STEM fields:

http://www.huffingtonpost.com/alici...-gap-encouraging-girls-in-stem_b_4508787.html

I would not ask how much intelligence is needed for a CS degree. Rather, you should ask yourself whether you might enjoy CS as a career field.

You should not be listening to people (including your parents) that you can't achieve a goal because you're not smart enough. When you listen to these people, it just sets you up for failure.

You need to change your entire mode of thinking from, "am I smart enough to achieve this goal", to "how can I achieve this goal that I've set for myself", and then just do it.

thanks. that's a positive mentality i should adopt.
 
  • #22
verty said:
It's not for nothing that languages like Basic and Pascal were invented. C and C++ are dangerous minefields for anyone not already quite disciplined and competent. Even pointers which aren't so difficult, when you start thinking about what const means, for example, can one return a constant pointer? It gets complicated pretty quickly.

As for AnnoyingGRL, I think she needs to fill in the precalculus gaps, that math WILL be needed for sure.

which topics in pre calc are needed in CS? (for example: trig, polynomials, etc.)
 
  • #23
annoyinggirl said:
which topics in pre calc are needed in CS? (for example: trig, polynomials, etc.)

Look at the two books I mentioned here, I think you will need everything they cover except matrices and conics. Usually colleges will have a class to catch up on the math but try to learn as much of it as you can first because it's always better when something isn't new, when you are used to it and can concentrate on the bigger picture.
 
  • #24
I'm almost certain you will be required to take a linear algebra class as well.
 
  • #25
You can't tell if you are intelligent enough to do something until you have put a lot of effort into it. You can't know what your full potential is if you just slack off. If I had based my opinion of my skills in physics on my first impression, I would have thought I was not as smart as other people in my class. However, over time with a lot of hard work, I discovered I was much better than these people. They assumed they could get along just based on raw intelligence but they quickly fell behind in the upper level courses. Some people might call you a try hard and not intelligent if you put a lot of work into what you do, but in order to be great at something you need to do this to develop your mind and discover your potential.
 
  • #26
Virtually everyone I've ever met is smart enough to become a programmer.

I main variables I know of are:

1) Do they work hard?
2) Do they blame others for their setbacks?
3) Do they find the material interesting?

If you can answer yes, no, and yes, you can be successful.
 
  • #27
analogdesign said:
Virtually everyone I've ever met is smart enough to become a programmer.

I main variables I know of are:

1) Do they work hard?
2) Do they blame others for their setbacks?
3) Do they find the material interesting?

If you can answer yes, no, and yes, you can be successful.

He asked if he was capable of becoming a computer scientist, not just a programmer. By programmer, I think you mean a coder who can just code in a couple of languages. But of course, your criteria is still good.

A good criteria for someone to be a computer scientist is, in my opinion:
1. Are you hard working (this is true for pretty much anything)?
2. Are you willing to think hard on problems and not expect all the answers to come to your mind immediately (ie. do you have patience)?
3. Are you interested in solving difficult problems?
4. Are you interested in how the technology (mainly computers) around you works?
5. Have you ever programmed? Are you interested in it?
6. Are you good (so far) at mathematics?
7. Do you enjoy problem solving?
8. Are you somewhat innovative?
9. Do you like working with computers?
 
  • #28
analogdesign said:
Virtually everyone I've ever met is smart enough to become a programmer.

I main variables I know of are:

1) Do they work hard?
2) Do they blame others for their setbacks?
3) Do they find the material interesting?

If you can answer yes, no, and yes, you can be successful.

Not necessarily. According to the research in this paper, some people instinctively "get" the basic ideas of programming, and others don't. The author suggests that you can test people's programming ability before they have learned anything about how to program, by looking at the way they deal with unfamiliar logical problems. The important factor is not whether people's reasoning processes are "correct", but whether they are consistent.

http://wiki.t-o-f.info/uploads/EDM4600/The camel has two humps.pdf
http://blog.codinghorror.com/separating-programming-sheep-from-non-programming-goats/

To write a computer program you have to come to terms with this, to accept that whatever you might want the program to mean, the machine will blindly follow its meaningless rules and come to some meaningless conclusion.

In the test the consistent group showed a pre-acceptance of this fact: they are capable of seeing mathematical calculation problems in terms of rules, and can follow those rules wheresoever they may lead.

The inconsistent group, on the other hand, looks for meaning where it is not.

The blank group knows that it is looking at meaninglessness, and refuses to deal with it.
 
  • #29
Yellowflash said:
He asked if he was capable of becoming a computer scientist, not just a programmer. By programmer, I think you mean a coder who can just code in a couple of languages. But of course, your criteria is still good.

Actually, she didn't. She asked if she could succeed in a computer science major. As you know the vast majority of CS graduates become programmers, not computer scientists. In my experience almost anyone is smart enough to be a programmer... of course only a few can grasp the needed abstractions of computer science.

Yellowflash said:
A good criteria for someone to be a computer scientist is, in my opinion:
1. Are you hard working (this is true for pretty much anything)?
2. Are you willing to think hard on problems and not expect all the answers to come to your mind immediately (ie. do you have patience)?
3. Are you interested in solving difficult problems?
4. Are you interested in how the technology (mainly computers) around you works?
5. Have you ever programmed? Are you interested in it?
6. Are you good (so far) at mathematics?
7. Do you enjoy problem solving?
8. Are you somewhat innovative?
9. Do you like working with computers?

I mostly agree with your criteria but I think a computer scientist would need a stronger emphasis on math interest rather than computer interest.
 
  • #30
AlephZero said:
Not necessarily. According to the research in this paper, some people instinctively "get" the basic ideas of programming, and others don't. The author suggests that you can test people's programming ability before they have learned anything about how to program, by looking at the way they deal with unfamiliar logical problems. The important factor is not whether people's reasoning processes are "correct", but whether they are consistent.

http://wiki.t-o-f.info/uploads/EDM4600/The camel has two humps.pdf
http://blog.codinghorror.com/separating-programming-sheep-from-non-programming-goats/

That could be true but in my experience as a TA in CS as well as taking the courses I think the main variable isn't whether they "get" it but whether they work hard and are disciplined.

Beginning CS requires learning a lot of new material and being disciplined to do significant programming projects that can take dozens of hours. Many students are not used to this level of work and fail.

I TA'ed a course in C programming for two semesters and was responsible for grading and helping the students. We had about 80 - 100 students total (40 - 50 each semester). I didn't meet a single student who worked hard and failed. Not one. The people I failed were the ones who never showed up for office hours and didn't turn in completed assignments.

Intelligence or "getting" programming really had very little to do with it.
 
  • #31
I guess the people who decide to study CS are self-selecting to some extent, but that research paper certainly rings true working in industry where people (certainly the older ones) may have never had any formal computer training. A minority of people never seem to get hold of the idea that a computer just does exactly what you tell it. They seem to be convinced that if you repeat the wrong commands often enough, it will eventually figure out what you want it to do.
 
  • #32
AlephZero said:
I guess the people who decide to study CS are self-selecting to some extent, but that research paper certainly rings true working in industry where people (certainly the older ones) may have never had any formal computer training. A minority of people never seem to get hold of the idea that a computer just does exactly what you tell it. They seem to be convinced that if you repeat the wrong commands often enough, it will eventually figure out what you want it to do.

That's a good point. I don't have experience working with people who aren't specifically trained in CS (or engineering).
 
  • #33
analogdesign said:
Actually, she didn't. She asked if she could succeed in a computer science major. As you know the vast majority of CS graduates become programmers, not computer scientists. In my experience almost anyone is smart enough to be a programmer... of course only a few can grasp the needed abstractions of computer science.

I understand that many computer science majors take the position of a computer programmer after graduating, but in university as a computer science major, they do a lot more than programming. I agree that is doesn't take a lot of capability to be a regular programmer, but isn't a programmer with little knowledge of computer science and a computer science major very different? I am sure they can succeed at a programmer, but they generally need a computer science as well.
 
  • #34
ZombieFeynman said:
Perhaps it is true that hard is not the best word. Still, I think that the syntax of C++ is not as simple as many other languages.

I don't think it is necessary at first to buy a book to learn C++. One can simply go to www.cplusplus.com to learn the fundamentals.

While everyone is discussing whether they think a C++ or a math major or a CS major is hard. I just want to say, I think going into something expecting it to be easy is not a good way to start. I always expect something to be difficult, and if it turns out to be easy, well good; then I can just work faster. But admitting something is easy will make you work with less fervor and be more distraught when something shows up that is a little difficult. Saying "This is easy" is like saying "I am turning my brain off".

Just try to set the bar for yourself rather high. Anyways, you can major in anything, just be prepared to work.
 
  • #35
Whether or not something is "hard" depends on individual aptitude and the match between your learning style and the particular prof's teaching style. It's neither here nor there are not apropos to OPs concerns anyway.
Hasn't the question already been answered?
 
  • #36
I think the OP'er asked a few times about how much calculus is needed. As far as I know, calculus is one of the subjects which is less important for computer science. Having a quick look at a university's page for computer science, some of the more maths-related topics are: proofs, logic, set theory, graph theory, probability, linear programming, combinatorics, and OK I see a bit about calculus, but fairly standard stuff about limits, continuity, Taylor expansion, e.t.c.

In applications of calculus in programming, there are many cases where you can use an algorithm to do an integration numerically for you. But I think this is fairly standard, you can just think of the integral as a Riemann sum. There are probably algorithms where you need to know a lot more calculus, but I would guess they are more specialized.
 
  • #37
I don't think there could be a productive discussion if someone claims you have to be intelligent enough to pursue something in life. Everything takes practice, and repetition is very important.

As BruceW mentioned, you can design an algorithm to solve all kinds of derivatives and integrals. That's not very hard and doesn't take any skill. In addition to numerical integration, integration by tables is very handy for this kind of task.

So, do you need to know calculus for computer science? Rarely, but it doesn't hurt to know. Just remember that knowing a lot in general defines who you are and who you will become.
 
  • #38
This thread is diverging very quickly, so I don't want to get too far.

Just a question to BruceW and Coffeejuncky, why do you guys think calculus and other mathematics are not required? Here are three examples:

1. Scientific computing. Computer algebra systems that compute integrals and derivatives directly, either symbolically or numerically, are the most blatant examples here, but in addition, any software that simulates a physical system that is based on continuous differential equations (e.g., computational fluid dynamics) necessarily involves computing derivatives and integrals.

2. Design and analysis of algorithms. The behavior of a combinatorial algorithm on very large instances is often most easily analyzed using calculus. This is especially true for randomized algorithms; modern probability theory is heavily analytic. In the other direction, sometimes one can design an algorithm for a discrete problem by considering a continuous analogue, using calculus to solve the continuous problem, and then discretizing to obtain an algorithm for the original problem. The simplest example of this might be finding an approximate root of a polynomial equation; using calculus, one can formulate Newton's method, and then discretize it.

3. Asymptotic enumeration. Sometimes the only way to get a handle on an enumeration problem is to form a generating function and use analytic methods to estimate its asymptotic behavior.
 
  • #39
Yellowflash said:
why do you guys think calculus and other mathematics are not required?

Sure, as a computer scientist you might study and/or implement anything and that could cover any kind of mathematics at all. Computer science is applied math of a particular sort.

However, the sorts of things where calculus is needed for a programmer is perhaps as much as 1% of all programming, likely much less. I spent thirty years as a programmer (mostly systems/compiler stuff) and rarely encountered any math beyond basic algebra, and never calculus. So if I were advising on what math a programmer should learn, I'd say logic, probability, combinatorics, stats, graph theory. Calculus/analysis last, even after abstract algebra. There's no analysis needed for probability or stats because there's no reason to get measure theoretic and understand it at a deep level.

My perspective...
 
  • #40
Yellowflash said:
Just a question to BruceW and Coffeejuncky, why do you guys think calculus and other mathematics are not required?

What I said:
coffeejunky said:
So, do you need to know calculus for computer science? Rarely, but it doesn't hurt to know.

There are too many examples for where calculus is needed, and I agree on that. However, I doubt you will be using it so much that you need to be an expert at it. It certainly doesn't hurt to know, which was what I mentioned.
 
  • #41
Yellowflash said:
This thread is diverging very quickly, so I don't want to get too far.

Just a question to BruceW and Coffeejuncky, why do you guys think calculus and other mathematics are not required? Here are three examples:
Lots of maths is required. I gave a list of some of the areas. But I think calculus is one of the (relatively) smaller areas of maths that a computer scientist will usually learn about. I mean yeah, if you are specifically exploring the dynamics of non-linear pde's via numerical methods, then calculus is important. But (at least where I am), a computer scientist won't go into this area, unless he/she decides to specialize in that area. I would not expect the average computer scientist to know much advanced calculus. And I'm not trying to be mean about computer scientists. I did physics, and I have very little experience in doing rigorous proofs, and I expect for the average physics student, it is the same. So if someone was considering doing physics, and asked if they need to be proficient in doing long, mathematically rigorous proofs, then I'd say in most cases, it is not necessary. Of course, if you are doing work that requires long mathematical proofs, then it is necessary.
 
  • #42
Calculus is useful for stuff like computer graphics, so there are areas where it is actually pretty important, but you can be a CS major and hardly need it at all. Just depends on what you do.

http://www.cc.gatech.edu/~turk/math_gr.html

Note the comment about calculus there, as well as the numerous subject that follow that have calculus as a prerequisite.
 
  • #43
I think the "how much math is required" question is mixing up two different things. One is the amount of math (and what type of math) is required to study computer science. The other is how much math is required for some particular applcation of CS in the real world.

From my experience in industry, CS graduates tend to know very little about applications, which isn't surprising, if they never studied them. Knowing in principle how to write a C++ compiler is interesting and maybe intellectually challenging, but unless you happen to be working for a company that writes compilers, it's mostly irrelevant.

Homeomorphic's link http://www.cc.gatech.edu/~turk/math_gr.html inadvertently demonstrates those issues quite well: note the date on the web page, and ask yourself how many people working with computer graphics today are still using 17-year-old graphics hardware and 17-year-old software libraries.
 
  • #44
Well, no, if you notice, I did point out that you can be a CS major and not need calculus at all, unless they make you take it. The point is that SOMEONE uses it, not that everyone uses it. Same goes for industry, I think.

The link may be 17 years old, but it is about math, not so much about programming. The same principles still apply to computer graphics. And yes, I know there are people in computer graphics who are not math people at all because they use stuff someone else wrote. But someone still has to write what they use. Or else everyone WOULD be using 17 year old libraries because no one would have written them.
 
  • #45
Well, my first encounter with programming state of the art graphics hardware was back in the 1970s, when state of the art looked like this, and one of those terminals cost about $40,000 in today's money.

Tektronix_4014.jpg


The amount of commonality between programming one of those beasts, working with a memory-mapped 640x480 pixels terminal that could display 256 colors (which is what personal computers used back in 1997, and seems to be what the web page is talking about), and programming today's graphics cards with hundreds of GPU cores, is just about zero.
 
  • #46
analogdesign said:
That's a good point. I don't have experience working with people who aren't specifically trained in CS (or engineering).

Here's an example of the mindset that Dehnadi and Bornat's paper is talking about:
https://www.physicsforums.com/showthread.php?t=752563
:cry:
 
  • #47
The amount of commonality between programming one of those beasts, working with a memory-mapped 640x480 pixels terminal that could display 256 colors (which is what personal computers used back in 1997, and seems to be what the web page is talking about), and programming today's graphics cards with hundreds of GPU cores, is just about zero.

That hardly proves that all that math isn't still relevant--maybe only in some niches of the computer graphics world, but the OP, at one point, asked if there was a use to calculus, not whether most programmers use it. The math principles are similar. I would think the math might be even more sophisticated these days. I mean, back in the 80's everything was 2-d. That means less math. These days, if you have processors that can do more, I would expect that you would be trying to do more stuff that you wouldn't even try to do back in the 90s, and that you would therefore need more math, not less.

If you want something a little more recent, here you go:



http://gamedev.stackexchange.com/questions/2029/what-math-should-all-game-programmers-know

I may be an amateur game programmer, not a pro, but for example, I basically used (very simple) calculus the other day when I wrote a program that simulate a ball that falls from the top of the window and bounces off the bottom. The basic set-up is you have a bunch of pixels, like points, (x,y), with y being sort of upside down from the usual. Same basic set-up as you had in 1997. I won't argue that the particulars of doing cutting edge graphics in industry are the same, but the basic set-up is the same. Vectors, 2-d and 3-d rotations, and a lot more if you get into physics simulation. It's true that you'd probably only need to know the very basics of calculus for a lot of graphics stuff, but I was talking about what SOME people do, not what Mr. Average Joe programmer does.
 
Last edited by a moderator:
  • #48
Game, graphics, and scientific simulation programming represents a teensy weensy fraction of the software jobs out there.

Most people who are "software engineers" or who are programmers for a living never need calculus, and skills like OOP design pattern, good coding practices, and the ability to think like a computer are far far more useful to most working software engineers than is calculus. This forum is naturally biased towards computing applications where calculus is used or towards academics, so it seems to us like it's really important for programming.

But almost every software job out there doesn't require calculus at all. It's part of what drove me towards engineering physics and away from pure CS/engineering--I wanted more continuous math.

That said, basic algebra and the ability to manipulate mathematical expressions involving polynomials and rational expressions *is* important for all software engineers.
 
  • #49
This forum is naturally biased towards computing applications where calculus is used or towards academics, so it seems to us like it's really important for programming.

Sure. I wasn't saying it was important for most programming. I was just saying there are some applications.

It is kind of amazing to me, though, how over-rated math seems to be. I think, not just in this forum, but in society in general, math has to be over-sold because most people hate it and say they are bad at it. So, maybe people like me, when I was younger get the message of "the more math, the better", when, in reality, the level of math that is actually in demand is sort of pitiful, by my standards, as a math PhD. It's just that most people find it so difficult/distasteful that they do need to have it over-sold to them, so they can just reach that minimal level and pass their high school algebra class, or maybe, at most, get through the standard engineering/CS math courses.

The thing that really amazes me is that I got disillusioned with my research as being too impractical, and then I turn around and find that even the very basic stuff like calculus isn't even in that high of a demand.

Still, you can do some cool stuff with math and programming.
 
  • #50
homeomorphic said:
The thing that really amazes me is that I got disillusioned with my research as being too impractical, and then I turn around and find that even the very basic stuff like calculus isn't even in that high of a demand.

I wonder how much of that is because computers do math for us? Cashiers don't need to do anything other than figure denominations when giving out change.

I think that the most valuable use of math in every day life is in statistics, so you know when companies and politicians and governments are trying to trick you. Appreciating normal distributions, when absolute vs. per capita/per area/per whatever numbers are preferred, the difference between rates of change and exact values of a variable, how graphs can be manipulated to exaggerate or hide, etc. I'd say people are woefully uninformed, and I think/hope that in the future we will regard widespread statistical illiteracy as much a thing of the past as widespread adult illiteracy is regarded now.


Next to statistics, I think the next most useful use of math for everyday life is figuring fractions and percents. I use this all of the time, whether I'm putting together a household budget spreadsheet or seeing which kind of toilet paper is the cheapest per square meter.

And, of course, the value of mathematical thinking, although unfortunately you don't really start to get to this until analysis or discrete math, IME.
 
Back
Top