Review of CS 373: Programming a Robotic Car
Udacity.com on a whim. I don't really have the spare time, though the topic seemed very apropos to the AVC. And I simply couldn't pass up on the opportunity.
I'm glad I didn't because the course is amazing and well worth the time. I can't believe it's free! I so wished any of my prior college courses were even half this good.
I've made it through Units 1 and 2 and completed homework for Unit 1. Prof Thrun covers Monte Carlo localization in Unit 1 while Unit 2 is focused on Kalman Filtering.
Unit 1 surprised me in that Prof. Thrun distilled complex ideas into simple, intuitive, fundamental concepts. That this fellow is not only the brains behind the Google self-driving car but also a very skilled teacher is a tremendously rare combination and of invaluable benefit to anyone who can seek his tutelage.
The first homework was difficult for me. Appropriately challenging, I should say. Part of it was that I was carrying some baggage from a class on decision making and probability. I knew just enough to screw myself up. Eventually I got it. At least, I think so but I won't know until the grades are posted.
Learning Kalman Filtering
Unit 2 presents a topic that I've struggled with off and on for a year now: Kalman Filtering. I have previously spent many hours reading and working examples out of Zarchan's "Fundamentals of Kalman Filtering" which is a good book, mind you. I felt somewhat comfortable in developing a simple Kalman Filter.
To this knowledge, the CS 373 course added quite a bit of foundational concepts in the same intuitive, simple way as before. I feel I understand the concept behind Kalman Filtering much better and from recent exercises with linear algebra, I even think I grasp the math, somewhat. This is nothing short of miraculous.
The course requires programming in Python with which I've had no prior experience. I have, however, programmed in around a dozen different languages over the last 20 years. Most recently I've been learning SPIN (the Propeller chip high level language) and Octave (Matlab) both of which have been helpful in picking up Python. Numerous Google searches have been instrumental as well.
So in short, I highly recommend taking this class to gain a more intuitive feel for the concepts covered. One can return to such basic core concepts when understanding of more complex situations fails, I think.
And, if you pick up Python as a side effect, that's an added bonus as it appears to be an extremely powerful language.