I was a really poor student in college. In fact, I was such a poor student that I ended up dropping out of school. I don't regret at all not having degree---it hasn't hurt me one bit, and I've had tons of great career opportunities despite my lack of diploma. However, I do frequently regret a lot of the amazing learning opportunities that I passed up.

This pain has been felt most poignantly by me when I look back on the survey course of Linear Algebra that I took at UC Berkeley, Math 110. This was a class that I took because it was a requirement from my major. It was also supposed to be the "easiest" upper division math class at Cal, and thus it was the first upper division class I took that had real proofs. I spent more time grappling with my inability to understand or create proofs than I did with the actual material. That might have been OK, but it was a subject I didn't particularly care and therefore I kind of fumbled through the class from week to week and finished the class without having really learned very much at all. Later on, when I had gotten the learning-how-to-learn-things aspect of math down, I did a lot better and actually came away from my other classes with a lot more knowledge.

As it turns out, knowing a little bit of linear algebra goes a long way when it comes to a wide range of fields in computer science. For instance, it is at the root of signal processing and computer graphics. It comes up in other places too. Recently for fun I wrote an n-body simulator. Guess what? All of those vector quantities like position and velocity that you can mostly ignore when doing analytic solutions in your college physics classes are really important when you're writing a computer simulation. Now I've been trying to get into graphics programming with OpenGL, and despite the fact that the type of work I'm doing is mostly orthographic projections, there are still vectors and matrices popping up all over the place. Linear algebra is also really helpful if you want to do number crunching on the GPU, since GPU shaders have all of this dedicated hardware for vector and matrix processing. All stuff I'm coming to learn the hard way.