4 ms·
Abstraction makes the mechanics of solving a problem orthogonal to the specifics. It's easier to do abstract reasoning (spotting deep connections between patte
by wisty 5y ago
Abstraction makes the mechanics of solving a problem orthogonal to the specifics.
It's easier to do abstract reasoning (spotting deep connections between patterns) when you abstract things. I'm pretty sure this has some solid evidence behind it.
It's really a question of whether you want to teach solving problems in general, or teach how to reliably solve a specific problem. If it's the latter, sure, in other subjects (e.g. accounting, science) they use specific terms a lot more, because the problem is more important than the problem solving.
As a teaching tool, teachers start with "3 apples" rather than "3x" problems. This is usually closer to K than 12 though.
- adam_arthur 5y ago> Abstraction makes the mechanics of solving a problem orthogonal to the specifics. Not sure what you mean. Providing context does not change underlying math or mechanics of solving the problem at all. Just the same as if you asked somebody to solve FizzBuzz or BeepBoop. What it does is make the rote exercise of solving more meaningful and relatable. Things that are relatable tend to be more easily internalized. Talking about early childhood apples etc is missing the point. I'm talking about generic methodology to learn a new concept in a timeboxed way, not a multi-year development. Though thinking behind the two is the same.
- username90 5y agoIt changes the problem in the minds of the student. If you call variables X and Y they wont assume that X and Y are special for this case. If instead you call them kilograms and kilometers people will assume that you teach them something that has to do with kilograms and kilometers and not some general purpose math equation.
- adam_arthur 5y agoIt's easy. You say here's a general purpose math equation. Now here's an example of computing something useful with it, using real world concepts.
- username90 5y agoBut often those real world applications are way harder to understand than the initial abstract problem they had. Involving other subjects only works if the students are already well versed in those subjects. And before you say "just learn those subjects first then?", often it is easier to first learn the abstract math and then learn those concepts than the other way around, since making sense of those equations is hard even when you do know the math and close to impossible when you don't.
- rimliu 5y agoAs I say it: prigramming is about manipulating abstractions. If you were good at algebra, you should not have problems with programming.
- adam_arthur 5y agoProgramming is easier because people care about readability! At least to a much greater extent than in math A lot of people are bad at math, but decent programmers. Yet, programming is basically just composing expressions the same as you would in math? Why the disparity?
- username90 5y agoMost programs you write are very concrete. Concrete programs can have concrete variable names. Then the more you abstract things the less variable names matter. If you create a general purpose list calling its content type "item" or "x" are both equally readable since "item" doesn't say anything that "x" doesn't. Now math, the entire subject of math is just a bunch of abstractions. Now there are a lot of concrete applications of math, but math itself isn't concrete.
- asiachick 5y agoHow often is that applicable. Take the math for Physically Based Rendering (PBR), for example the Cook-Torrance reflectance equation. For me at least, it's 1000x easier to understand with descriptive variable names than with L, p, w, kd, c, ks, D, F, G, n, L, dw No idea where else this equation is useful because it used single letter variables.
- username90 5y agoThis applies to learning about applications of math, it doesn't apply to learning math. If you give the Cook-Torrance reflectance equation with proper variable names to some random linear algebra student they should be able to solve it since it is just basic maths, but they will struggle immensely trying to do anything with it since all the names will confuse them.
- exmadscientist 5y agoIt's always a tradeoff. Single-letter variables are extremely superior if you're working out math on paper or at a board. It is simply not possible to work through a long and complex calculation or derivation with variable names that are not compact. You also end up concentrating more on structure than on identity. You recognize idioms (like the dot products in your example) and it almost doesn't matter what the things being dotted together are; the physical form of the problem guides you to what they must be, even if you lose track. There is only one way it can go. The flip side is that if someone else does the derivation, and you just need to use the result, it's basically completely incomprehensible to you. You haven't put in the time to understand the problem yourself (if you had, you'd "just" have derived or at least worked through everything yourself), so the extra affordance of long, descriptive variable names often makes a tremendous difference to final understanding. This, incidentally, is a major point of difference between programming code and mathematics. For any good mathematics problem, there is only one right answer, and any attempt to solve that problem will reach it. (Possibly in a different guise, but the solutions will certainly be isomorphic.) Programming is so often business-driven or real-world-constraint-driven that this is not true. Two attempts to solve the problem may diverge radically. And no one will ever derive business logic from ZFC set theory! So for mathematicians, the fundamental understanding of the problem domain necessary to do good mathematics enables the use of terse, fluid notation. Since programming just doesn't work that way, its verbose, rigid notation is much more useful.