I think I'll try this
This link has been bookmarked by 357 people . It was first bookmarked on 02 Apr 2006, by Santhosh.
-
06 Feb 19
-
09 Jan 17
-
18 Dec 16
-
I still have my discrete math textbook from college. It's a bit heavyweight for a third-grader (maybe), but it does cover a lot of the math we use in "everyday" computer science and computer engineering.
-
- Aside from probability and discrete math, there are a few other branches of mathematics that are potentially quite useful to programmers, and they usually don't teach them in school, unless you're a math minor. This list includes:
- Statistics
-
Linear Algebra (i.e., matrices). They should teach Linear Algebra immediately after algebra. It's pretty easy, and it's amazingly useful in all sorts of domains, including machine learning.
-
nformation Theory and Kolmogorov Complexity. Weird, eh? I bet none of your high schools taught either of those. They're both pretty new. Information theory is (veeery roughly) about data compression, and Kolmogorov Complexity is (also roughly) about algorithmic complexity. I.e., how small you can you make it, how long will it take, how elegant can the program or data structure be, things like that. They're both fun, interesting and useful.
-
What about calculus? Everyone teaches it, so it must be important, right?
Well, calculus is actually pretty easy. Before I learned it, it sounded like one of the hardest things in the universe, right up there with quantum mechanics. Quantum mechanics is still beyond me, but calculus is nothing. After I realized programmers can learn math quickly, I picked up my Calculus textbook and got through the entire thing in about a month, reading for an hour an evening. -
It's better to know the overall concepts and techniques, and go look up the details when you need them.
-
if you know it's a differentiation problem, or a convex optimization problem, or a boolean logic problem, then you at least know where to start looking for the solution.
There are lots and lots of mathematical techniques and entire sub-disciplines out there now. If you don't know what combinatorics is, not even the first clue, then you're not very likely to be able to recognize problems for which the solution is found in combinatorics, are you?
But that's actually great news, because it's easier to read about the field and learn the names of everything than it is to learn the actual algorithms and methods for modeling and computing the results. In school they teach you the Chain Rule, and you can memorize the formula and apply it on exams, but how many students really know what it "means"? So they're not going to be able to know to apply the formula when they run across a chain-rule problem in the wild. Ironically, it's easier to know what it is than to memorize and apply the formula. The chain rule is just how to take the derivative of "chained" functions — meaning, function x() calls function g(), and you want the derivative of x(g()). Well, programmers know all about functions; we use them every day, so it's much easier to imagine the problem now than it was back in school. -
Doing this will give you amazing perspective on mathematics, after a few months. You'll start seeing patterns — for instance, it seems that just about every branch of mathematics that involves a single variable has a more complicated multivariate version, and the multivariate version is almost always represented by matrices of linear equations. At least for applied math. So Linear Algebra will gradually bump its way up your list
-
a summation sign (capital-sigma) or product sign (capital-pi) will look scary at first, even if you know the basics. But if you're a programmer, you'll soon realize it's just a loop: one that sums values, one that multiplies them. Integration is just a summation over a continuous section of a curve, so that won't stay scary for very long, either.
-
almost all useful math is heavily automatable, so you might as well get some automated servants to help you with it.
-
I'm finding that I like to be able to follow explanations (proofs) using a kind of "plausibility test" — for instance, if I see someone dividing two polynomials, I kinda know what form the result should take, and if their result looks more or less right, then I'll take their word for it. But if I see the explanation doing something that I've never heard of, or that seems wrong or impossible, then I'll dig in some more.
That's a lot like reading programming-language source code, isn't it? You don't need to hand-simulate the entire program state as you read someone's code; if you know what approximate shape the computation will take, you can simply check that their result makes sense. E.g. if the result should be a list, and they're returning a scalar, maybe you should dig in a little more. But normally you can scan source code almost at the speed you'd read English text (sometimes just as fast), and you'll feel confident that you understand the overall shape and that you'll probably spot any truly egregious errors.
I think that's how mathematically-inclined people (mathematicians and hobbyists) read math papers, or any old papers containing a lot of math. They do the same sort of sanity checks you'd do when reading code, but no more, unless they're intent on shooting the author down. -
If an exercise (or even a particular article or chapter) is starting to bore you, move on.
-
I've noticed that a few domains I've always been interested in (including artificial intelligence, machine learning, natural language processing, and pattern recognition) use a lot of math. And as I've dug in more deeply, I've found that the math they use is no more difficult than the sum total of the math I learned in high school; it's just different math, for the most part. It's not harder. And learning it is enabling me to code (or use in my own code) neural networks, genetic algorithms, bayesian classifiers, clustering algorithms, image matching, and other nifty things that will result in cool applications I can show off to my friends.
-
And I've gradually gotten to the point where I no longer break out in a cold sweat when someone presents me with an article containing math notation: n-choose-k, differentials, matrices, determinants, infinite series, etc. The notation is actually there to make it easier, but (like programming-language syntax) notation is always a bit tricky and daunting on first contact
-
-
06 Sep 16
-
07 Aug 15
-
20 Apr 15
-
The right way to learn math is to ignore the actual algorithms and proofs, for the most part, and to start by learning a little bit about all the techniques: their names, what they're useful for, approximately how they're computed, how long they've been around, (sometimes) who invented them, what their limitations are, and what they're related to. Think of it as a Liberal Arts degree in mathematics.
-
I think the best way to start learning math is to spend 15 to 30 minutes a day surfing in Wikipedia. It's filled with articles about thousands of little branches of mathematics. You start with pretty much any article that seems interesting (e.g. String theory, say, or the Fourier transform, or Tensors, anything that strikes your fancy.) Start reading. If there's something you don't understand, click the link and read about it. Do this recursively until you get bored or tired.
-
just about every branch of mathematics that involves a single variable has a more complicated multivariate version, and the multivariate version is almost always represented by matrices of linear equations. At least for applied math.
-
Metamathematics is the fascinating study of what the limits are on math itself: the intrinsic capabilities of our formal models, proofs, axiomatic systems, and representations of rules, information, and computation.
-
-
01 Feb 14
Kim GarciaSchools are teaching us the wrong math, and they're teaching it the wrong way.
-
05 Jun 13
-
They teach math all wrong in school. Way, WAY wrong. If you teach yourself math the right way, you'll learn faster, remember it longer, and it'll be much more valuable to you as a programmer.
-
Algebra? Sure. No question. You need that. And a basic understanding of Cartesian geometry, too. Those are useful, and you can learn everything you need to know in a few months, give or take.
-
The math courses they teach in and high school don't help ready you for a career in programming, and the simple fact is that the number of programming jobs is rapidly outpacing the demand for all other engineering roles.
-
I've found it's much easier to learn and appreciate geometry and trig after you understand what exactly math is — where it came from, where it's going, what it's for. No need to dive right into memorizing geometric proofs and trigonometric identities. But that's exactly what high schools have you do.
-
For computer scientists, 95% or more of the interesting math is discrete: i.e., math on the integers.
-
I got the basic framework for these (upcoming) insights in no small part from Richard Gabriel's Patterns Of Software, so if you absolutely can't wait, go read that. It's a good book.
-
For programmers, the most useful branch of discrete math is probability theory. It's the first thing they should teach you after arithmetic, in grade school.
-
probability theory, you ask? Why, it's counting.
-
It's definitely the first thing they should teach you in grade school after you learn Basic Calculator Usage.
-
I still have my discrete math textbook from college. It's a bit heavyweight for a third-grader (maybe), but it does cover a lot of the math we use in "everyday" computer science and computer engineering.
-
so you know why the heck you're learning it. Heck, that's probably true for every course.
-
probability and discrete math
-
Calculus is all about continuums — rates of change, areas under curves, volumes of solids. Useful stuff,
-
If you're going to spend that much time studying math, it ought to be on topics that will remain relevant to you for life.
-
The right way to learn math is breadth-first, not depth-first. You need to survey the space, learn the names of things, figure out what's what.
-
How would you do it? Well, easy. You'd start subtracting the denominator from the numerator, keeping a counter, until you couldn't subtract it anymore, and that'd be the remainder.
-
You could figure it out because you know that division is just repeated subtraction.
-
problem identification
-
the first step to applying mathematics is
-
But that's actually great news, because it's easier to read about the field and learn the names of everything than it is to learn the actual algorithms and methods for modeling and computing the results. In school they teach you the Chain Rule, and you can memorize the formula and apply it on exams, but how many students really know what it "means"? So they're not going to be able to know to apply the formula when they run across a chain-rule problem in the wild.
-
programmers know all about functions; we use them every day,
-
You should learn how to count, and how to program, before you learn how to take derivatives and perform integration.
-
I think the best way to start learning math is to spend 15 to 30 minutes a day surfing in Wikipedia. It's filled with articles about thousands of little branches of mathematics. You start with pretty much any article that seems interesting (e.g. String theory, say, or the Fourier transform, or Tensors, anything that strikes your fancy.) Start reading. If there's something you don't understand, click the link and read about it. Do this recursively until you get bored or tired.
-
the multivariate version is almost always represented by matrices of linear equations.
-
So Linear Algebra will gradually bump its way up your list, until you feel compelled to learn how it actually works, and you'll download a PDF or buy a book, and you'll figure out enough to make you happy for a while.
-
Math is almost always about formalizing our "common sense" about some domain, so that we can deduce and/or prove new things about that domain.
-
it's just a loop
-
Integration is just a summation over a continuous section of a curve
-
you'll see polynomials all the time, so eventually you'll pick up on the arithmetic of polynomials by osmosis. Same with logarithms, roots, transcendentals, and other fundamental mathematical representations that appear nearly everywhere.
-
With that said, I still occasionally do math exercises. If something comes up again and again (like algebra and linear algebra), then I'll start doing some exercises to make sure I really understand it.
-
Certainly it will improve your logical reasoning ability; it's a bit like doing exercise at the gym, and your overall mental fitness will get better if you're pushing yourself a little every day.
-
-
05 May 13
-
18 Jan 13
-
13 Dec 12
-
08 Sep 12
-
29 May 12
-
I think the best way to start learning math is to spend 15 to 30 minutes a day surfing in Wikipedia. It's filled with articles about thousands of little branches of mathematics. You start with pretty much any article that seems interesting (e.g. String theory, say, or the Fourier transform, or Tensors, anything that strikes your fancy.) Start reading. If there's something you don't understand, click the link and read about it. Do this recursively until you get bored or tired.
Doing this will give you amazing perspective on mathematics, after a few months. You'll start seeing patterns — for instance, it seems that just about every branch of mathematics that involves a single variable has a more complicated multivariate version, and the multivariate version is almost always represented by matrices of linear equations. At least for applied math. So Linear Algebra will gradually bump its way up your list, until you feel compelled to learn how it actually works, and you'll download a PDF or buy a book, and you'll figure out enough to make you happy for a while.
-
-
27 May 12
-
17 May 12
-
08 May 12
-
05 Apr 12
-
04 Apr 12
Joe Devon ®Math For Programmers http://t.co/Vw61Q5NH (http://t.co/N9nwdbNY) via @sayemislam #guru
-
03 Apr 12
-
24 Jan 12
-
Math is a lot easier to pick up after you know how to program. In fact, if you're a halfway decent programmer, you'll find it's almost a snap.
-
They teach math all wrong in school. Way, WAY wrong. If you teach yourself math the right way, you'll learn faster, remember it longer, and it'll be much more valuable to you as a programmer.
-
- Knowing even a little of the right kinds of math can enable you do write some pretty interesting programs that would otherwise be too hard. In other words, math is something you can pick up a little at a time, whenever you have free time.
-
Nobody knows all of math, not even the best mathematicians. The field is constantly expanding, as people invent new formalisms to solve their own problems. And with any given math problem, just like in programming, there's more than one way to do it. You can pick the one you like best.
-
Math is... ummm, please don't tell anyone I said this; I'll never get invited to another party as long as I live. But math, well... I'd better whisper this, so listen up: (it's actually kinda fun.)
-
Grade School: Numbers, Counting, Arithmetic, Pre-Algebra ("story problems")
High School: Algebra, Geometry, Advanced Algebra, Trigonometry, Pre-Calculus (conics and limits)
College: Differential and Integral Calculus, Differential Equations, Linear Algebra, Probability and Statistics, Discrete Math -
The Math They Didn't Teach You
-
The Right Way To Learn Math
The right way to learn math is breadth-first, not depth-first. You need to survey the space, learn the names of things, figure out what's what. -
long division
-
division is just repeated subtraction
-
The intuitive notion of division is deeply ingrained now.
-
right way to learn math is to ignore the actual algorithms and proofs, for the most part, and to start by learning a little bit about all the techniques: their names, what they're useful for, approximately how they're computed, how long they've been around, (sometimes) who invented them, what their limitations are, and what they're related to. Think of it as a Liberal Arts degree in mathematics
-
-
17 Jan 12
-
29 Dec 11
-
27 Oct 11
-
21 Oct 11
-
10 Sep 11
-
09 May 11
-
Math is almost always about formalizing our "common sense" about some domain, so that we can deduce and/or prove new things about that domain.
-
-
08 May 11
-
07 May 11
-
01 Sep 10
-
05 May 10
-
24 Mar 10
-
10 Mar 10
-
21 Jan 10
-
06 Jan 10
-
17 Dec 09
-
07 Dec 09
-
17 Nov 09
Samuel MorrisYou can be a good, solid, professional programmer without knowing much math. But hey, you don't really need to know how to program, either.
-
03 Nov 09
-
24 Oct 09
-
20 Oct 09
-
15 Oct 09
-
15 Jun 09
-
27 May 09
Kalid AzadWhich is why I think they're teaching math wrong. They're doing it wrong in several ways. They're focusing on specializations that aren't proving empirically to be useful to most high-school graduates, and they're teaching those specializations backwards.
-
09 Apr 09
-
The vast majority of programming involves traversing lists and doing various kinds of sorts. For these tasks, graph theory and queuing theory remain indispensible. Naturally, these areas of math never made it onto the author's list of things allegedly "important to know."
-
I have daydreamed about a solution. I think what should be done is to restructure math so that a student would take a one semester course in polynomial algebra, where they mastered thos basic skills. No roots, no rational expressions (algebraic expressions which look like a fraction), just polynomials. Many more students could handle that. Then they would take "Polynomial Calculus".
-
Add Sticky NoteA nice place to learn linear algebra is a set of free video lectures of Gilbert Strang's MIT class at:
http://ocw.mit.edu/OcwWeb/Mathematics/18-06Spring-2005/VideoLectures/index.htm -
-
the problem is they haven't taught neither you, nor all math majors in all except very few departments what are mathematicians really doing about mathematics. those who are really going to do math, of course, eventually figure by themselves (usually in grad school) -
Add Sticky NoteIf you want to understand math, start with the number systems. The basic axioms (Peano!) and go on from there. Learn the linear algebra involved (what is a group, what a ring? How about a field? Does it have to be commutative? What happens if it isn't?) - you'd be suprised how different linear algebra is from applying Gauss' algorithm...
-
Maybe, but how could you possibly start there in elementary school? Of course there should be some exposure to 'real math' at primary school - many schools do it - despite the 'new math' backlash in the States - but surely little minds have to be thinking creatively, exploring, modeling and testing before they can dig into abstract models of sets, axioms, possibility of proof ... I don't know, I am not a mathematician, so I could be way off beam here.
-
-
Add Sticky Notechildren learning maths -
- those who have the most understanding ( mathematicians!) should consider it an obligation to society to publish their "path to understanding" - these should be widely disseminated and chewed over by educationalists - what they had the good fortune to find, just might work for others... - a shared database of key, transformative insightful experiences-
Yes! I have only read one of these "paths to maths", Seymour Papert's. How representative is he?
-
-
Add Sticky Notestudents from business, chemistry, physics, engineering, math, biology, and so forth, require indepth knowledge of continuous systems.
This is in addition to the fact that a theory concerning continuous spaces are much more general than one for discrete systems. Take the well known fourier transform.
A student needs to learn about the continous fourier transform, before he or she starts implementing discrete fourier transforms in computer programs.-
Why? I find continuous models easier, most of the time, but that doesn't mean to say that they are more realistic. Most of the real world is atomic in some way, and it is discrete modelling that led to statistical mechanics, the 19th century gateway to modern physics and chemistry.
I think this argument is of the type of "this is how it is, therefore this is how it should be", in other words a closed mind. In fact, the more I see it, the more I think of Alan Kay's lesson in discrete calculus that he gives to 6th graders, and the more I think that _that_ reflects the real world, and, as far as I can tell so far, the way that real applied mathematicians think.
-
-
Add Sticky NoteI'd like to add one more author
which had written very nice books on
how the math and matematician work:
George Polya
Try his "Mathematics and Plausible Reasoning" and "Mathematical Discovery".
Also his "Problem in Analyses" are awesome.
I hope they're not out of print.
Also try Alfred Renyi. I don't know
whether his "Trilogy on Math" was translated to English, I read it in Russian translation.-
Book recommendations that seem to relate to the "Road to Maths" question
-
-
As soon as you move beyond the very easy stuff you need consistent notation and practice problems (until you learn how to make your own) and wikipedia doesn't do either very well even though it is great for a quick definition or proof you forgot.
-
Add Sticky NoteLike many other people I know in math grad school I really disliked all the math classes I took before college except geometry which had some proofs. There is nothing as unpleasant and unenlightening than learning rote rules to solve equations, calculate integrals or do trigonometry.
-
Aha!
-
-
Add Sticky NoteReally learning math is about fitting together the pieces to see why things really work. If you just want to get your homework done and don't care why things work you don't even have the right pieces in your mind for an explanation to fit into.
-
Oh :(
-
-
Add Sticky Noteconfidence is essential to math, you need to grope around in the dark with potential solutions until one works
-
Interesting
-
-
-
06 Apr 09
-
03 Apr 09
-
02 Apr 09
-
01 Apr 09
-
25 Feb 09
-
03 Feb 09
-
31 Jan 09
-
27 Jan 09
-
17 Jan 09
-
Math is a lot easier to pick up after you know how to program.
-
I've found it's much easier to learn and appreciate geometry and trig after you understand what exactly math is — where it came from, where it's going, what it's for. No need to dive right into memorizing geometric proofs and trigonometric identities.
-
For computer scientists, 95% or more of the interesting math is discrete: i.e., math on the integers.
-
you can learn it all by yourself as a closet hacker, and be just as good (or better) at it than they are. Your background as a programmer will help keep you focused on the practical side of things.
-
how small you can you make it, how long will it take, how elegant can the program or data structure be
-
The right way to learn math is breadth-first, not depth-first. You need to survey the space, learn the names of things, figure out what's what.
-
The right way to learn math is to ignore the actual algorithms and proofs, for the most part, and to start by learning a little bit about all the techniques: their names, what they're useful for, approximately how they're computed, how long they've been around, (sometimes) who invented them, what their limitations are, and what they're related to. Think of it as a Liberal Arts degree in mathematics.
-
problem identification
-
If you have a problem to solve, and you have no idea where to start, it could take you a long time to figure it out. But if you know it's a differentiation problem, or a convex optimization problem, or a boolean logic problem, then you at least know where to start looking for the solution.
-
Why? Because the first step to applying mathematics is
-
because it's easier to read about the field and learn the names of everything than it is to learn the actual algorithms and methods for modeling and computing the results.
-
They're focusing on specializations that aren't proving empirically to be useful to most high-school graduates, and they're teaching those specializations backwards. You should learn how to count, and how to program, before you learn how to take derivatives and perform integration.
-
spend 15 to 30 minutes a day surfing in Wikipedia.
-
Do this recursively until you get bored or tired.
-
Math is almost always about formalizing our "common sense" about some domain, so that we can deduce and/or prove new things about that domain
-
Metamathematics is the fascinating study of what the limits are on math itself: the intrinsic capabilities of our formal models, proofs, axiomatic systems, and representations of rules, information, and computation.
-
notation. Mathematical notation is the biggest turn-off to outsiders.
-
That's a lot like reading programming-language source code, isn't it? You don't need to hand-simulate the entire program state as you read someone's code; if you know what approximate shape the computation will take, you can simply check that their result makes sense. E.g. if the result should be a list, and they're returning a scalar, maybe you should dig in a little more. But normally you can scan source code almost at the speed you'd read English text (sometimes just as fast), and you'll feel confident that you understand the overall shape and that you'll probably spot any truly egregious errors
-
starting to bore you, move on. Jump around as much as you need to. Let your intuition guide you. You'll learn much, much faster doing it that way, and your confidence will grow almost every day.
-
Well, it might not — not right away. Certainly it will improve your logical reasoning ability; it's a bit like doing exercise at the gym, and your overall mental fitness will get better if you're pushing yourself a little every day.
-
The notation is actually there to make it easier, but (like programming-language syntax) notation is always a bit tricky and daunting on first contact.
-
Knuth's "Concrete Mathematics"
-
Just because you don't use the math doesn't mean it's useless, and it sure as hell doesn't mean that the curriculum is designed wrong.
-
http://mathworld.wolfram.com
-
The point is to realize that the prime numbers are the atoms of integers
-
I think the only problem is in the testing of knowledge retention
-
a program called Kumon (it started in Japan, it sums up to being 25 minutes of math a day, everyday, 365 days a year)
-
Math is not that big of a prerequisite for programming. Programming is more of a prerequisite of math. I get better in my high school and college math because i could see similarities in programming.
-
How People Learn
-
Understanding by Design
-
Raymond Smullyan. His books typically start with a series of fascinating logic problems, with a story to tie them together, and then segue into an extended and enjoyable study of some branch of logic and foundations that almost always ends up in a discussion of some of Godel's work from a new direction each time
-
-
13 Jan 09
-
14 Dec 08
-
08 Dec 08
-
13 Nov 08
-
24 Oct 08
-
05 Sep 08
-
28 Jul 08
-
02 Jun 08
-
09 May 08
-
11 Apr 08
-
20 Mar 08
-
16 Mar 08
-
26 Feb 08
-
23 Dec 07
-
10 Dec 07
-
28 Oct 07
-
27 May 07
-
12 May 07
-
09 May 07
Brennan O'KeefeThey teach math all wrong in school. Way, WAY wrong. If you teach yourself math the right way, you'll learn faster, remember it longer, and it'll be much more valuable to you as a programmer.
-
07 May 07
-
26 Apr 07
-
23 Apr 07
-
22 Apr 07
-
rampion"I think the best way to start learning math is to spend 15 to 30 minutes a day surfing in Wikipedia. [...] If there's something you don't understand, click the link and read about it. Do this recursively until you get bored or tired. "
-
benpjohnsonMath For Programmers... http://t.co/K4AIMqEM
Public Stiky Notes
I think this argument is of the type of "this is how it is, therefore this is how it should be", in other words a closed mind. In fact, the more I see it, the more I think of Alan Kay's lesson in discrete calculus that he gives to 6th graders, and the more I think that _that_ reflects the real world, and, as far as I can tell so far, the way that real applied mathematicians think.
Page Comments
Would you like to comment?
Join Diigo for a free account, or sign in if you are already a member.