math for non-mathimatical programmers?
category: general [glöplog]
A few general recommendations:
1. Do not let notation scare you. Yes, it's a greek letter (big sigma) with numbers around it, but that is just a notation for the sum of a number of things. It is written that way because that is a convenient and concise way to write it. You want to learn math, and the notation is an essential part of that.
2. Remember that math and code are not the same thing. They are not even different notations for the same thing. Code can express the evaluation of a formula, but not all math is about evaluating formulas, and not all formulas can be evaluated. If you always look for an algorithmic explanation for all math concepts, you will fail, because not all math concepts have one. Using the sum example again: the sum might be over a set that you cannot iterate over, or even an infinite set. Thus, the sum is (conceptually) not the same as iterating over an array and summing up the elements, though in many cases, the evaluation of the sum can be expressed as such.
3. Maybe reading books is not the right way for you to learn math. Try some of the many free video recordings of university courses available, for example on iTunes U.
1. Do not let notation scare you. Yes, it's a greek letter (big sigma) with numbers around it, but that is just a notation for the sum of a number of things. It is written that way because that is a convenient and concise way to write it. You want to learn math, and the notation is an essential part of that.
2. Remember that math and code are not the same thing. They are not even different notations for the same thing. Code can express the evaluation of a formula, but not all math is about evaluating formulas, and not all formulas can be evaluated. If you always look for an algorithmic explanation for all math concepts, you will fail, because not all math concepts have one. Using the sum example again: the sum might be over a set that you cannot iterate over, or even an infinite set. Thus, the sum is (conceptually) not the same as iterating over an array and summing up the elements, though in many cases, the evaluation of the sum can be expressed as such.
3. Maybe reading books is not the right way for you to learn math. Try some of the many free video recordings of university courses available, for example on iTunes U.
Fundamentals of math and physics for game programmers.
http://www.amazon.com/Fundamentals-Math-Physics-Game-Programmers/dp/0131687425
I think this is as basic as it gets since alot of it was rehash of high school math and physics...
I think it would do you good, its offers structured point by point examples and solutions and also code implementation for the visualization you were asking about.
Its not an end all when it comes to implementation, there are a good few errors, but its a nice start with a low difficulty curve and that's better then nothing.
However finding what book to concentrate on is not your biggest problem.
http://www.amazon.com/Fundamentals-Math-Physics-Game-Programmers/dp/0131687425
I think this is as basic as it gets since alot of it was rehash of high school math and physics...
I think it would do you good, its offers structured point by point examples and solutions and also code implementation for the visualization you were asking about.
Its not an end all when it comes to implementation, there are a good few errors, but its a nice start with a low difficulty curve and that's better then nothing.
However finding what book to concentrate on is not your biggest problem.
this get pretty deep. i'll check it out tomorrow. i don't actually use itunes. is ITunes U a collection of university lectures?
i'd just like to be able to read the books that i have with minimal problaems and be able to understand them. i have a windows 200 graphics book and several raytracing books. a few of them are full of calculus. but, if i can learn more lets go for it. i'll check out that book deus. but, eventually i'm gonna run out of book money. but, what would your opinion be on what my biggest problem is? i'm not being arrogant. just asking. because, i apparently have a learning problem. when i was younger it was alot easier. because things like programming was all i wanted to do. you couldn't get me to leave the house. now i leave the house and now i'm retarded. lol.
i don't know you, but i somehow get the impression that you are scared of unknown things way too easy.
i mean, a formula is just nothing to be scared of, because it will just be written there, giving you every amount of time you need to understand it, not judging you at all if you can't (it's only you then ;).
for me, the beautiful thing about math is that it is able to express some very abstract concepts with (most of the time) just a few symbols in a universal manner.
and that is all you need: a concept of those few symbols, time, and some fascination. and it sure helps - at least for me - to try to visualize or even implement it in some otherwise useless code bit.
up to computer science at a university, there always was a reason for the math formulas that i learned to exist. and understanding the reason and how those formulas were a solution to the problem almost always got me safe into "understanding-land"...
i mean, a formula is just nothing to be scared of, because it will just be written there, giving you every amount of time you need to understand it, not judging you at all if you can't (it's only you then ;).
for me, the beautiful thing about math is that it is able to express some very abstract concepts with (most of the time) just a few symbols in a universal manner.
and that is all you need: a concept of those few symbols, time, and some fascination. and it sure helps - at least for me - to try to visualize or even implement it in some otherwise useless code bit.
up to computer science at a university, there always was a reason for the math formulas that i learned to exist. and understanding the reason and how those formulas were a solution to the problem almost always got me safe into "understanding-land"...
hexen, have you heard about the Khan Academy? It might be worth to check out. Even though the math tutorials there weren't targeted to programmers, they are easy to understand and could help you learn a bunch of useful math stuff.
You just won't be able to understand math without investing a lot of time into it. Get over it.
best way is to learn it in schools, uni, etc. Most of you'll need is basic math at university level.
"i'd just like to be able to read the books that i have with minimal problaems and be able to understand them."
That's your problem, instead of trying to work out the problems presented in a book, you have just given up on them, trying to find a new book that's easier.
Its kinda understandable how that could happen if you had this huge collection of works on the same topic at hand but its been extremely disruptive to your learning.
And this has cumulated into attitudes like:
". rather than having to read a math book on a bunch of shit i'll never use."
" i guess i'm retarded. i am also left handed. i hear we think more visually. so, i guess there is another point against me."
"seriously why break myself apart because i'm not good enough and think differently. i shouldn't sit around and think out of all the people on the planet noone ever thought about writing a book on how to easily explain calcul\us and other mathematics to programmers who may not be good at it."
" i am not smart enough to do that. i'd feel like hanging myself. even though i probably wouldn't."
Working out a math/physics book takes great deal of time for the contemplation and practice of the material.
If you have a learning disability then of course you should get the assistance needed, but in the end it just means that you have to work twice if not thrice as hard.
(This post must seem extremely arrogant and dismissive but this is also very personal to me)
That you denigrate the material because you can't understand it is priceless, but you wouldnt be doing that if you could appreciate the knowledge and what it represents, and you would appreciate the material if you hadnt resolved yourself that the knowledge was not meant for you.
So yeah...BEAT yourself up for it, blame yourself, feel like shit, because knowing that you yourself are personally responsible for the failure meant that it was possible, and still is.
Also what hcdlt said.
That's your problem, instead of trying to work out the problems presented in a book, you have just given up on them, trying to find a new book that's easier.
Its kinda understandable how that could happen if you had this huge collection of works on the same topic at hand but its been extremely disruptive to your learning.
And this has cumulated into attitudes like:
". rather than having to read a math book on a bunch of shit i'll never use."
" i guess i'm retarded. i am also left handed. i hear we think more visually. so, i guess there is another point against me."
"seriously why break myself apart because i'm not good enough and think differently. i shouldn't sit around and think out of all the people on the planet noone ever thought about writing a book on how to easily explain calcul\us and other mathematics to programmers who may not be good at it."
" i am not smart enough to do that. i'd feel like hanging myself. even though i probably wouldn't."
Working out a math/physics book takes great deal of time for the contemplation and practice of the material.
If you have a learning disability then of course you should get the assistance needed, but in the end it just means that you have to work twice if not thrice as hard.
(This post must seem extremely arrogant and dismissive but this is also very personal to me)
That you denigrate the material because you can't understand it is priceless, but you wouldnt be doing that if you could appreciate the knowledge and what it represents, and you would appreciate the material if you hadnt resolved yourself that the knowledge was not meant for you.
So yeah...BEAT yourself up for it, blame yourself, feel like shit, because knowing that you yourself are personally responsible for the failure meant that it was possible, and still is.
Also what hcdlt said.
Quote:
Try some of the many free video recordings of university courses available
Seconded. MIT has a lot of really good lectures here: http://ocw.mit.edu/courses/audio-video-courses/ Although some are also available on iTunes, you won't need to install Apple crippleware this way.
I've found that the lecture format is a very good way to learn a new subject, at least with a competent lecturer. Books alone just don't work as well.
Quote:
but, what would your opinion be on what my biggest problem is?
I'd say your biggest problem right now is that you're impatient.
Secondly, you seem to reject mathematical notation as an irrelevent way of making simple things more complicated. It's really a language for expressing complicated things in a precise way. If you don't learn it, you're cut off from all those sources of knowledge that agree on the standard notation, and at best you'll end up reinventing the wheel when you discover that expressing complicated things in a precise way is important. You won't get very far, at any rate.
Your third biggest problem is that you assume there is this one-to-one correlation between maths and programming, such that any mathematical problem can be expressed as a programming problem. Although the two are related fields, that correlation doesn't really exist. Any programmer needs to know a fair deal of maths, especially if what you're looking to do is graphics programming. Raytracing is the archetypical example of a programming exercise that absolutely requires an understanding of algebra and analytic geometry.
Don't worry too much about calculus, though. It's not very relevant to graphics programming.
Control: that Khan Academy's link is unvaluable... thanks for it, hadn't even heard of it.
Priceless as quick consulting material
Priceless as quick consulting material
The thing with math is that you can't understand it immediately once it gets beyond a certain level (which varies from individual to individual). What is required thereafter is a process called "learning", which can be a frustrating experience, but if you keep at it, you'll get there eventually.
Personally, I had a very easy time during my first eight or nine years in school, basically not needing to study ever. Then suddenly I hit a brick wall: Reading about something just once was no longer enough for me to understand it, nor was reading it twice! Despite this I managed to struggle along for a couple of years (with really poor grades, and the resulting impact on my self esteem). It wasn't until several years later, having dropped out of school, that I realized I actually had to work to gain knowledge beyond the point I had reached. Once I sat down and actually spent time doing the calculations and followed the examples in the books, both maths and physics started to again become as clear to me as they once were. The difference is nowadays I have to work really hard, and think for hours or even days, to get a functional grasp of new mathematical concepts, but on the other hand it's much more rewarding than before when I finally do.
Basically, there are no shortcuts to understanding maths. It's not a subject shrouded in unnecessary complexity; rather the opposite. You can learn some applied maths by heart, but if you want to create something on your own you sooner or later need a deeper knowledge of what you're doing, beyond mechanically following a set of rules for rotating a matrix. The best way to gain that knowledge is by working and studying hard for many hours.
Personally, I had a very easy time during my first eight or nine years in school, basically not needing to study ever. Then suddenly I hit a brick wall: Reading about something just once was no longer enough for me to understand it, nor was reading it twice! Despite this I managed to struggle along for a couple of years (with really poor grades, and the resulting impact on my self esteem). It wasn't until several years later, having dropped out of school, that I realized I actually had to work to gain knowledge beyond the point I had reached. Once I sat down and actually spent time doing the calculations and followed the examples in the books, both maths and physics started to again become as clear to me as they once were. The difference is nowadays I have to work really hard, and think for hours or even days, to get a functional grasp of new mathematical concepts, but on the other hand it's much more rewarding than before when I finally do.
Basically, there are no shortcuts to understanding maths. It's not a subject shrouded in unnecessary complexity; rather the opposite. You can learn some applied maths by heart, but if you want to create something on your own you sooner or later need a deeper knowledge of what you're doing, beyond mechanically following a set of rules for rotating a matrix. The best way to gain that knowledge is by working and studying hard for many hours.