When I became a self-taught developer I found my math skills continuously lacking. I started teaching myself on Khan Academy and really picking it up a lot better because of the simplicity of the language and the good examples. I finally realized I learned math best visually.
Interactive lessons like these are great. There are things that can be improved about this book (load times and enhanced interactivity) but all in all this a great resource for people that learn best visually. I'll come back to this soon in my future self-education.
I've done math while developing 3D stuff, physics simulation and a lot of things - yet I never felt like my math skill mattered that much. And I really dislike theoretical math like in school.
Nowadays my lack of knowledge is most apparent in studying machine learning. There have been some very high level concepts employed, at least for me: Jacobian matrices, partial derivatives, tensors, etc. I've been able to fake that for a while, the algorithms get abstracted in the libraries. Yet the abstraction obscures a real understanding for me in how they work.
Did your school actually teach pure math?
I bet a lot of programmer types had similar frustrations to the computationally intensive version of math taught in many high schools when they knew that these processes could simply be automated.
There two areas where I've felt the need for advanced math most keenly during my software development career are: 1) Similarity scoring in information retrieval and recommendation engines. 2) DSP.
"Oh come on, you should know what a vector, v, is by now. Check out Chapter 2, for crying out loud."
seems kind of harsh to say to the reader while they're reading the first sentence of Chapter 2..
As someone who has used linear algebra almost every day in some form over the last decade, it's hard to get a perspective of what aspects are challenging to the beginner. And since I TA courses that involve linear algebra, it is good to know where the problems are.
It wasn't before years later when A) I'd taken more abstract algebra courses that introduced concepts like tensors and fields and B) I'd taken more practical computational courses where I had to do things like use linear algebra in 3D graphics and use eigenvectors to do dimensionality reduction and PCA, that I really understood the subject and its place in the world.
Just saying here's a random object (that we'll call a "matrix"), here's some random steps (that we'll call "taking a determinant"), now memorize how to apply the steps to the object and see if the result is zero, didn't lead to much deeper understanding.
Whenever I studied Linear Algebra it was simply "here's a matrix, here is some algorithm, use it to get some number seemingly coming out of nowhere and just believe us that this number is what you really need."
Note that I am not immediately interested in mathematical proof of why this method is correct. I want a plain English explanation of what is going on but instead you usually just get a bunch of notation to digest.
Eigenvectors never made intuitive sense to me. As with the various decompositions (Cholesky, LU, etc), I could apply the math as algorithms to follow, but never got to the point where felt I could apply them to new problems.
Then again, in practice, I've only needed eigenvectors once since college, and it was more a rote implementation described in a paper. (In other words, don't feel like you should educate me on them here.)
Since you are a TA, don't you get some idea of where your students struggle with linear algebra?
The general idea started to make sense in mechanics class when I could see matrices are convenient shorthand for solving multiple variables at once, and which behave like 'regular' variables when trying to manipulate them algebraically.
Eigenvalues and eigenvectors didn't make sense until quantum mechanics, where your 'operator' is effectively a matrix and your 'state' is a vector. The allowed observed values are the eigenvalues, and your final state after measurement is the corresponding eigenvector. Wave functions are then an extension of this from discrete space (useful for modelling spins for instance) to the continuum of position space.
Quantum mechanics is a huge application of eigenvectors, but I also really enjoy things like the "moment of inertia tensor", whose eigenvectors are the natural axes of rotation. Or better still, coupled oscillators, where the eigenvectors give "normal modes" of vibration. (And if you look at coupled first-order differential equations, eigenvectors can tell you all sorts of things about "trajectories" of the solutions. There are great applications of that to things like population dynamics in biology.)
Imagine I have a matrix transformation that takes a given input vector and converts it into a superposition of a thousand other vectors in random directions; that's far harder to reason about than if if just kicked it farther or brought it closer in the same direction.
And as for TAing, have you ever TA'd? You definitely get a feeling but I can count numerous times when I've stood in front of the tutorial class and asked if there are any questions only to get no response back. I think it's a symptom of first years. I've TA'd calculus as well and I get similar responses. It's very frustrating sometimes.
When I realized I was understanding subjects better than my classmates, I'd take on the task of asking the "dumb" questions for them. It was partly selfishness, I was tired of answering those questions for them outside of class. But it really did prove helpful to my classmates. It really helped that, when I was sitting with the students, I got to hear them mumbling and grumbling about what they didn't get. So I knew exactly what questions to ask to get the professor/TA to help my classmates.
I never TA'd myself so I have no idea if this would actually work, or at least work consistently. But, if you have a couple students that really seem to be getting the material, you could try talking to them one-on-one and ask them to help you out in this manner.
I was thinking more of when you look at their assignments. There are often multiple ways to approach a problem, and the route chosen can reveal something about one's level of comfort.
It doesn't help that university TAs get almost no training in how to be a TA. At least, I didn't.
The problem I've found with assignments though is that people copy and cheat. Many times someone will do very well on assignments and then do absolutely terrible on midterms and finals. It's very frustrating. I remember one course where everyone did nearly perfect on the assignments and yet the final and midterm followed the standard bell curve.
Moreover, if you create a non-judgmental environment in which people are free to talk about their approaches to problems and get feedback not only from you but from other students as well, then just by watching carefully, you will learn some of the more common gaps in understanding. (Note that some students will not talk in these situations unless forced, but that does not mean they do not benefit from following the discussion.)
If you're anything like I was when I was first TAing courses like this, you might think that if you do this, you won't have enough time to "cover the material". But I put it to you that a lecture that is not absorbed doesn't cover anything.
Matrix multiplication, ranks etc. are some of the most random seeming operations you can tell a student to memories.
When I took algebra, I remember being tripped by all the new vocabulary. Why do mathematicians say something is "Abelian" instead of 'commutative'? Why is it important to have terms like "group", "ring", and "vector space"? Sure, I learned the definitions, but at that level they were 'random seeming'.
I think this transition between mechanically generating solutions to problems using pattern matching and some basic algorithms on the one hand, and the more mathematically mature approach of exploring problem spaces using pattern matching, some basic algorithms, and intuition can be difficult for many people.
It's not necessarily the material -- you can get used to almost anything, and even convince yourself it's easy or obvious with enough familiarity -- but the lack of intuition. When you're first learning linear algebra, its fundamental unity is not obvious, especially if the instructor does not take pains to point it out. (And even if the instructor does take pains to point it out -- well, it's hard to understand why the instructor is saying we could do this computation this way or that way.) So in the absence of existing intuition or any perception of unity, linear algebra becomes another target for pattern matching and basic algorithms.
As it happens, I've never, ever felt like I didn't "get" linear algebra. However, I almost always feel like I "get" it now and all my prior conceptions of it were a confused muddle.
One application I really like is in machine learning: the eigenface algorithm.
After I understand the plain English concept, then give me the math notation and proof and applications.
The way it works today is often to simply leave out the first part and I believe this is why many people find it hard to develop intuition and a real understanding of the concept.
For man it's just there, you memorize it, you apply it, you take the result and simply have faith that it is what you need because some book/ prof said to solve problem X use eigenvalues.
Since scaling is a really easy operation to understand, the space generated by these vectors will be really easy to understand. Note that different vectors can be scaled by different amounts.
Now it often turns out that the space generated like this is actually the whole of the space under consideration and this really simplifies the linear map we started with. Hope that helps.
Instead of calculus for business majors or art majors they really should be using LA instead.
At the moment I'm trying to teach my son LA but I can't find any books for 8-10yo
So, in short, my advice is "add more context."
How does one build intuition about LA?
Whole worlds were opened up to me when I learned that the fundamentals of trigonometry, like the simple computation of sin of an angle, are all related at its base to a square but no math teacher ever made that connection for me.
might be good for you if you're motivated by a deadline, graded progress, some Matlab/Octave implementation, and certificate of accomplishment, vs. self-paced Strang (AFAIK).
LAFF is great
most of the value of a good math book is that years after reading it you can use it as a reference to look things up you will inevitably forget.
Linear algebra without error analysis is very dangerous. Many many things are theoretically useful, but can't be used in practice. You can't calculate determinants, you can't count unique eigen values, you can't use certain decompositions.
Unfortunately this isn't really topic you can do a quick tutorial on and start writing new algorithms
Sigh. I sometimes wish I paid more attention to my studies while I was in school instead of goofing off and playing card games :'(
This works, provided your measured positions are perfectly accurate, but it isn't the best you can do. The reason is that a single projection actually has one degree of freedom less than a general projective transformation. (Three parameters to say where your camera is located. Three to say how it's rotated. One scaling factor. Total is 7 rather than 8.) This means that there's an extra (slightly hairy) constraint on the parameters a..i, which turns out to mean that the aspect ratio of the rectangle you're mapping to is determined for you.
Imposing that constraint will give you (1) more information -- you won't have to know ahead of time what aspect ratio you have -- and (2) a more accurately estimated transformation.
You can find more details of this stuff in, e.g., this PDF document: http://people.csail.mit.edu/bkph/articles/Harmful.pdf .
For starters, there might be a way to do away with the loading screen for shorter pages.
If so, thank you. What is the license?
This may not be a popular opinion but I (and many ordinary readers like me) see that link as a website. Not a book.
It feels heavy and overwhelming to see a large number of 3D diagrams and visual depictions on just one web-page. Having to scroll down to read the full chapter with all that animation and "motion" is probably a bad move too. Given that this is supposed to come off like a book you can probably ditch the scroll.
Ideally, you'd want to give away few concepts in small easy-to-understand chunks with just 1 or 2 figures per page. And let the reader flip/click over to the next section like it happens with an ibook or kindle book or even a real physical book.
IMHO the idea of ripping apart a book at its spine and forcing the loose design of websites over it is a complete no-go for avid book readers. Especially for the mobile and tablet users (probably even for the desktop users!, why else would everyone insist to download PDF, ePub or other artifacts?). But I'm sure that a section of developers over here wouldn't agree with my opinion. So take it all with a pinch of salt.
Also just the place where I'd let the designers take over.
The full note says "up to 70 seconds on tables." On my computer it took less than 2 seconds.