18 comments

[ 5.1 ms ] story [ 49.1 ms ] thread
I just bought Gilbert Strang's Linear Algebra so that I can read it along with watching his MIT lectures. I'm wondering how that will compare to this book/course.

Has anyone here already taken a similar path and what did you think?

My main interests are in graphics programming, so I'm hoping to apply what I learn from the course to that.

If anyone else has any recommendations on other areas of math, courses, or books in general for learning CG, that would be much appreciated!

The approaches of Strang and Klein are complementary.

* Klein uses complex numbers to introduce many concepts of vectors, and uses simple graphics programming with Python to motivate the student. The exercises in that chapter of the Klein are brilliant.

* Klein introduces three different "fields" right away: the reals, the complex numbers, and the bool-valued "GF(2)" (a two-valued Galois Field). Strang sticks with the reals.

* The more traditional approach of Strang to Gauss-Jordan elimination is much smoother than Klein's. For this topic, the Klein suffers for lack of straight-up problem drills.

Thanks for the comparison. Though they are complementary, would you recommend reading one before the other?
I would suggest starting with the Klein and getting through the section on complex numbers, "Playing with C", which is at the end of chapter 1. (Note, Klein has a lengthy chapter 0 which is a review of prerequisites such as functions.)

After that, I suggest moving through them roughly in parallel. You may find that you prefer one or the other; I wouldn't feel bad about running with either one. (In my view, the Klein is more uneven: it has more weak sections, but is occasionally very compelling.)

I've watched about 1/3 of Strang's lecture videos and several of Klein's (as well as bought both books).

Klein emphasizes practical computer science applications of LA (like principal components and hands-on coding tasks), whereas Strang emphasizes LA in terms of calculus and vector calculus.

I think both courses are outstanding. I suspect CS students will appreciate Klein's content and examples more, though Strang lectures are so good you won't find much to complain about. I have heard that some math purists object to Strang's emphasis as being as lacking fundamental rigor and overemphasizing intuition. But this criticism probably applies to both courses. I think both approach LA in terms of its utility toward CS (Klein) or engineering (Strang) problems.

Disclaimer: I have an engineering background.

I think this is a fair characterization of the two approaches.

I am currently taking a class by Strang co-taught with Alan Edelman (MIT/Julia) and Raj Rao (Michigan) that has a strong emphasis on applications and hands-on coding tasks (using Julia).[0] I am also making my way through CtM (thoroughly enjoying) and hope that they will release the video lectures soon as I think the lectures and CtM complement each other quiet nicely.

[0] Matrix Methods In Data Analysis, Signal Processing, And Machine Learning - https://stellar.mit.edu/S/course/18/sp17/18.065/

It's more or less a rite of passage to share these Youtube videos whenever the topic of Linear Algebra comes up: https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2x...
I'm just finished watching the 3blue 1brown series and am working through the Klein book now.

Klein's books is very heavy on symbolic manipulation and not much (geometric) intuition. I still think it's worthwhile because of its CS applications. But someone wanting to learn LA can easily get discouraged.

I would suggest one do both the book and the 3blue 1brown series. The former is the bread, the latter is the jam.

If you want to cover the basics of LA (vector and matrix manipulation, mainly), and want to have some practical application of that knowledge - there are two main areas which can be easily explored at home:

1. 3D graphics programming

2. Machine learning (particularly neural networks)

For the first, don't just start playing with OpenGL or Direct3D - while you need to know the math on those, you won't get your feet as wet. What you want to do is start from the bottom and build up (essentially building a software 3D engine). While you won't be generally dealing with large matrices or vectors (4x4 mainly), it will be more than plenty to teach the bare ropes.

Machine learning - and neural networks - are where you start to deal with much larger matrices, as they hold the mathematical representation of the nodes which make up the graph that is the network. Now you have shift gears and think about how to parallelize things, on a much (potentially) larger scale (even here, though, you can start out small - a simple NN to learn the XOR function is very small, but contains everything needed to move on to larger networks once you understand the basics).

Again - these two practical applications one touch the surface of LA, but are both fun applications of these basics to perhaps motivate you to learn more. Even if you don't take it to the next level though, what you gain from these experiments might prove invaluable in the future.

Personally, I think they should emphasize these two applications in lower grades when they start to teach this stuff; I know when I was in high school (too many years ago to contemplate), the only thing that kept me interested in both my geometry and linear algebra sections was the fact that I was playing around with 3D wireframe graphics on my 8-bit microcomputer at home, and needed to understand the stuff!

/ok, maybe I outed my age somewhat...lol

> What you want to do is start from the bottom and build up (essentially building a software 3D engine)

How do you suggest starting this?

(comment deleted)
Also interested in 3D engine pointer.