Math skills required for Computer Science/Game Programming
76 replies, posted
Hi.
I'm starting a degree in Computer Science next year and I'm just wondering as to what mathematical subjects I should look at between now and September.
I'm planning on getting into game/app/sandbox development and my math skills at the moment are probably not even at high school level, I received a B in GCSE Mathematics but that was a while ago now.
Any help would be much appreciated. Thanks.
Lots.
Where would be a good starting point ?
The amount of math skills you need are absolutely trigastonomical!
No but I'd start with basic algebra. Matrices are important. Trigonometry is important (most obvious example of using trig is using tangent for rotating something towards a point). Linear algebra is important.
Math is important.
I'd say you're exaggerating there, Yogurt. You can always pull in third party libraries to do what you can't.
I think I should have had my question to say, What kind of maths skills will I need to complete my degree with good grades?"
[QUOTE=joyenusi;33794572]I think I should have had my question to say, What kind of maths skills will I need to complete my degree with good grades?"[/QUOTE]
Are you sure your degree program (or whatever it's called) doesn't include required math courses? Because, I'm currently pursuing a degree in computer science which requires me to take several math classes including algebra, trigonometry, and calculus.
Also, perhaps I'm just haven't had a use for it yet, but I can't see where the majority of the math I've learned will be helpful in general for programming.
Linear Algebra and Calculus are musts. Full understanding of trigonometric concepts.
[url]http://www.khanacademy.com[/url]
This website has video lessons on all of the above concepts. Good luck with your degree!
Friend of mine is on Futuregames Academy in Sweden and he says the math is not that kind of a big deal, its pretty easy once you just read the books.
But i think it depends on what you want to do
(He's name is Shellman Deluxe on Facepunch)
I'm going Computer Science/Engineering. And there were some math and science requirements to get accepted into this program, but else the math is provided by the program itself.
I'm in the first year right now and courses involving math we're doing/going to do
Mathematics, Basic Course (recap of almost all the high school math)
Single Variable Calculus
Multivariable Calculus
Linear Algebra
Physics: Waves and particles
Second year (courses may change):
Logic for Computer Science
Probability Theory and Statistics
Numerical Methods
Markov Processes
Third year:
Discrete Mathematics (huge course)
Algorithms, Data Structures and Complexity
And a few courses that you can select yourself.
Fourth and fifth:
This depends on which master's program that you are going to pick.
Examples:
Scientific computing - Definitely contains several math courses.
Mathematics - Self-explanatory.
Then there are program that doesn't have that much math, but most of the masters require you to read some more math courses.
I'm on the 2nd year of a computer science degree and thus far have learned no maths other than basic discrete mathematics and logic.
Thank-you, these replies are proving really helpful.
[QUOTE=Swebonny;33795136]
...
Third year:
Discrete Mathematics (huge course)
And a few courses that you can select yourself.
... [/QUOTE]
I find it strange that you're not required to take Discrete Math earlier! At my school it's recommended that we take it in the first year in preparation for algorithm classes (proofs of correctness through induction, complexity, etc..).
[b]Edit:[/b]
Now that I think about it, though, your course could quite possibly cover different material than mine. Logic for Computer Science sounds like it could cover such proofs.
I find that you don't need to know any math; you just need to know how to apply it. I didn't know what the hell sin or cos did until about a year ago, and I was using it plenty.
Game programming do usually contain a lot of Object-oriented programming and Trigonometry math from what ive heard/know.
Which needs a better mathematical experience.
But apart from that. Programming is more about learning the Grammar for the programming language. and then the use of logic thinking is important,
The math part is mostly used around Object-oriented programming and trigonometry (as mentioned)
[QUOTE=Senney;33795291]I find it strange that you're not required to take Discrete Math earlier! At my school it's recommended that we take it in the first year in preparation for algorithm classes (proofs of correctness through induction, complexity, etc..).
[b]Edit:[/b]
Now that I think about it, though, your course could quite possibly cover different material than mine. Logic for Computer Science sounds like it could cover such proofs.[/QUOTE]
You are correct. The the logic course covers some of that stuff. And we're also going to do "Algorithms, Data Structures and Complexity" in year three. But I forgot to put it on the list.
Editing it now.
The maths required to start computer science is very minimal, most universities will start with covering everything you learned in high-school/college (or what you should have learned) so you should be fine.
But to answer your question basic algebra will cover most of the maths required to do programming
If you want to do stuff like game-programming some other stuff will become (more) important such
-Trigonometry
-Vector maths
Finally, maths is something very important when it comes to programming, while you may not directly
need it, there will be a lot of times you will have to implant or work with very a advanced mathematics, such as physics-engines, Random number generator, lightning etc.
My computer science program requires:
Linear Algebra which includes matrices, complex numbers, trigonometry, etc.
Single Variable calculus. Derivatives, definite/indefinite integrals, etc
Statistics.
Discrete Math. Probability, graphing, proofs etc
Also, it seems that any concentration (except software engineering) requires more math in later years such as multivariable calculus.
You could take a look at this to understand how linear algebra could be used in games.
Helped me a lot.
[url]http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/[/url]
Knowledge of vectors and trigonometry is key.
[QUOTE=semite;33808725]Knowledge of vectors and trigonometry is key.[/QUOTE]
Please explain to me when you'd use either of those things outside game development.
[QUOTE=Catdaemon;33811340]Please explain to me when you'd use either of those things outside game development.[/QUOTE]
[url]http://en.wikipedia.org/wiki/Structural_load[/url]
[QUOTE=rosthouse;33811393][url]http://en.wikipedia.org/wiki/Structural_load[/url][/QUOTE]
That isn't computer science, that's a specific application of computer science.
You need to know what each function does and learn to use, not implement it.
[QUOTE=Catdaemon;33811340]Please explain to me when you'd use either of those things outside game development.[/QUOTE]
Determining positions, doing physics calculations, converting angles to vectors/vectors to angles, etc. etc.
[QUOTE=semite;33812581]Determining positions, doing physics calculations, converting angles to vectors/vectors to angles, etc. etc.[/QUOTE]
This is all still very specific.
It's like saying programmers need to be well versed in civil engineering because there's the off-chance they might write a structural analysis program one day. Or that they have to understand theoretical physics because they might have to write firmware for lab equipment.
Computer scientists, I think, are best served by a full understanding of discrete mathematics (including logic, number theory, set theory, graph theory, etc.), linear algebra, statistics, and (maybe) basic calculus.
Trigonometry is iffy and you're entirely unlikely to use the higher calculus topics. (For game development, specifically, you will use [i]tons[/i] of trig, but that's an usual case)
I am, by no means, trying to argue against learning anything. I think that [i]everyone[/i] should learn at least trig. and calc., and other topics if only for their own personal betterment.
I'm not a CS major, though, so take this all with a grain of salt.
To be fair most degrees will play catch up in the first year to make sure all students have the required knowedge. It might just mean some extra effort on your part to learn things quickly.
[QUOTE=ROBO_DONUT;33817032]This is all still very specific.
It's like saying programmers need to be well versed in civil engineering because there's the off-chance they might write a structural analysis program one day. Or that they have to understand theoretical physics because they might have to write firmware for lab equipment.
Computer scientists, I think, are best served by a full understanding of discrete mathematics (including logic, number theory, set theory, graph theory, etc.), linear algebra, statistics, and (maybe) basic calculus.
Trigonometry is iffy and you're entirely unlikely to use the higher calculus topics. (For game development, specifically, you will use [i]tons[/i] of trig, but that's an usual case)
I am, by no means, trying to argue against learning anything. I think that [i]everyone[/i] should learn at least trig. and calc., and other topics if only for their own personal betterment.
I'm not a CS major, though, so take this all with a grain of salt.[/QUOTE]
You are actually one of the best programmers I have seen on this forum though, and with that I take your guidance seriously.
It also depends on the college. CS majors at my university are required to take through Calc II, and a discrete mathematics class
[QUOTE=likesoursugar;33806977]You could take a look at this to understand how linear algebra could be used in games.
Helped me a lot.
[url]http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/[/url][/QUOTE]
Thanks for that, I found it incredibly useful and it explained a lot of things I was confused with in a very understandable way.
Sorry, you need to Log In to post a reply to this thread.