Most of the changes in my life have been non-Arduino related - a couple of new jobs along the way, plus some free online classes in Artificial Intelligence and Machine Learning.
Hmm, I fancy some free online classes like that!
Check out the offerings from Udacity and Coursera, specifically:
http://www.udacity.com/overview/Course/cs271/ (CS271 - Introduction to Artificial Intelligence)
https://www.coursera.org/course/ml (Machine Learning)
These first two were originally offered by Stanford in the winter of 2011; I initially took both of them at the same time, but due to time constraints and other issues, I ended up having to drop the AI course (I ended up quitting my job over these courses - my boss at the time basically told me to choose my education or continue to work 60+ hour weeks on a forgettable project - I chose my education). I ended up completing the Machine Learning course.
The following spring, I took this course from Udacity:
http://www.udacity.com/overview/Course/cs373/ (CS373 - Artificial Intelligence for Robotics - Programming a Robotic Car)
I completed it as well; all of these courses (and Udacity and Coursera) grew out of that initial Stanford experiment. I am glad I was a part of it. One thing they did teach me, is that I need to do a follow-up course on statistics and probabilities (I think one or both offer courses on that subject as well). At some point, I am going to re-take the “Intro to AI” course from Udacity, and complete it this time. Had I had the time availability back then, I know I could have completed it - it was pretty tough (I managed to somehow get through the stats/probability section of the course - which is the most difficult portion of all of these courses, IMHO).
Anyhow - if you have a good grounding in that, as well as linear algebra, you should be able to make it through them. At the time, the Udacity 373 course used Python for it’s programming, while the Machine Learning course from Coursera used Octave (a MATLAB work-alike); the Intro to AI course didn’t have any programming that I recall, but that might have changed since then.
One thing I do know about the CS373 course is that it really explained the concepts of Kalman filters, A* (and other pathfinding), PID, and SLAM extremely well. If you ever wanted to understand any of these, that course is a really good one to take. The Machine Learning course was great in that it really showed more than few wonderful algorithms for ML, and really made understanding how artificial neural networks and back-propagation worked in an fairly intuitive manner. The biggest issue with that course was wrapping your head around the concept of vectorizing an algorithm (of course, when you -do- understand that concept, and you can see when and how to use it for other things, you begin to wish you had a large beowulf cluster or NVidia Tesla computer to play with)…
I took part of CS271 when it first came out from Stanford, while at the same time taking the Machine Learning