Hacker Courses The online courses programmers keep recommending, ranked from 20 years of public forum comments.
i
#145 overall

CS373 Programming a Robotic Car

Udacity

3 recommenders · 3 threads · recommended in 1 year, 2012 · score 3.1

Go to course ↗

CS373 is a free Udacity course taught by Sebastian Thrun that introduces robotics for self-driving cars, covering topics such as localization, particle filters, Kalman filters, and motion planning through short video lectures and coding exercises.

Commenters describe it as a strong, well-paced introduction to autonomous robotics, with one saying Thrun claims its coursework matches or exceeds his Stanford classes at the same level.

Machine Learning & AIintermediatefreeinteractive MOOC#robotics#self-driving cars#particle filters#kalman filter#thrun

Recommendations by year

20062026

What commenters said (6)

  1. Strongly recommendsjmau52012in “Ask HN: Best Online Learning Sites?”

    I'm registered for CS101: Building a Search Engine and CS373: Programming Robotic Cars over at Udacity. Both classes are scheduled to start in a few hours and I highly recommend you get over there and join the fun. Both classes are being led by Sebastian Thrun, ex-Stanford professor, Google Fellow, and instructor of the highly successful Introduction to Artificial Intelligence course than Stanford hosted last year.

    Link: http://www.udacity.com/

  2. RecommendsSudarshanP2012in “Udacity Statistics 101 (a critique of Udacity's Stats class)”

    I did not go through the stats course from udacity, but went through the build your own robotic car class. I would like to say the opposite of what the author of this article says. The conventional education system is designed to suit people who lean deductively. They prefer to "stand on top of concepts they know"... Then there are people who like to learn by dabbling. People who learn by tinkering. Such people find too much formalism annoying.

    Think of it like this... If your child is trying to stand up and walk, dont try to get its gait perfected. Let it enjoy the success of barely standing and moving a few steps forward. I would say "every child has the right to enjoy this moment"... Not just the Usain bolt's and the ballet dancers. I think irrespective of the subject, the initial learning event is just scaffolding. I don't think the best ballet dancer remembers any part of how she actually learnt to walk.

    When I attended the robotics class, I left knowing that "Multiplying gaussians is a cool thing" I figured the skeleton of how particle filters work. Will I drive a car for which I wrote the code. Absolutely not. Will I ask my enemy to sit in a car for which I wrote the code? Absolutely not. But I still got something. Something beyond frustration of being less than "super genius". I left saying "hey that is neat". Tomorrow when I invoke a Kalman filter in say OpenCV, I will feel less insecure about the abilities of that "magic black box". To me the robotic car became a "product of extreme passion created by brilliant hackers" than "mysterious devices created by other worldly geniuses"

    If I wanted definitions I would look up Mathworld or something better. If I am going to write a paper on genetics, I am not going to use a stats 101 lecture notes as my reference. But here exists a phase in my learning where I actually do not care about the difference in dividing by N or N-1 or N+1. What the guys obsessed with formalism do is that they make that phase such a huge pain, that I bother not to cross it.

    I get a way lot more "per hour invested" or "per dollar invested" from online education. From my point of view. That is the major disruption. The barrier to exploration has been almost eliminated. I could dabble with writing science fiction and then take a peep at anatomy.

    Somethings like "A guy walked in and it was left in the video" is a positive sign. It shows that they are a scrappy startup creating a minimum viable product. If people start using this product even without the polish, it indicates real value. This is a standard startup practice. Better production quality means fewer classes and slower growth and less data for analytics. So I actually congratulate them for not obsessing with stuff like Video quality. Do you have any idea how google looked when it was released?

    Does it have its shortcomings? Yes it does. Am I glad such alternatives exist to "Colorless, Odorless, Tasteless, Expensive Credentialling". Between Stanford or MIT and an online course I would definitely go to the Physical school. But between a tier 2 Indian Univ, I would prefer an online education and use a university only for a credential.

  3. Recommendssgk2842012in “Peter Norvig to teach 'Design of Computer Programs' at Udacity”

    In my experience, Udacity isn't concentrating on short, easy classes. They've simply chosen to start with courses that have larger appeal.

    Sebastian Thrun, the professor for CS373, has routinely stated that the caliber of the coursework and lecture material is equal to or beyond what he'd expect from his Stanford classes at the same level.

    The teaching model they use is phenomenal though. If you haven't tried it, you should. They do brief 2 to 5 minute videos, followed by questions and coding exercises testing what you just learned. You learn things in very gradual increments, and are immediately forced to apply that knowledge. By the end of the lecture you're left thinking "Of course it works that way."

  4. Mentionscr0sh2017in “Show HN: Pattern Recognition Engine”
    I suppose CNN means Cortical Neuron Network?

    CNN == Convolutional Neural Network

    I tried initially to use traditional machine learning techniques for pattern recognition but it really bothered me that the whole thing seems like a black box so I decided to write a pattern recognition engine from scratch without using any of the current machine learning techniques.

    That...is not a good approach.

    Don't get me wrong - learning this stuff is hard, and implementing it (on your own - that is, a completely from-scratch not-using-any-libraries neural network) is even more non-trivial. You need to know and understand linear algebra for this; knowing a bit of calculus (derivatives mainly) can also help, but isn't absolutely necessary.

    Trying to build it yourself, while admirable, will likely only lead you down paths already traveled and found wanting (if you are lucky). Once you understand the basics of neural networks and other machine-learning tools (gradient descent, state vector machines, etc) - and have implemented them yourself - you'll have a foundation on which to build with tools like TensorFlow, Keras, and others, without them feeling like such "black boxes".

    Remember: Abstraction is a good thing. If you are doing any kind of programming that isn't hand-assembly or plugboards - you are using an abstraction to the machine. One thing I have learned in listening to people like Andrew Ng and Sebastian Thrun - is that even they rely and use those black-box abstractions, and don't have a "not-invented-here" attitude. There's nothing wrong with wanting to look under the hood for understanding, but don't let too much hubris get in the way of thinking that you can do it better without understanding what has come before.

    You can take this advice or leave it - it's up to you of course; but if you want to have a better base on how all of this works, then my suggestion would be for you to gain an understanding first of linear algebra (just the basics - vectors, matrices, mathematical manipulation and calculation, etc) - Khan Academy or other resources can help there.

    Then, go to Udacity, Coursera, and/or some of the other MOOC providers, and find a class or two on machine learning, and take them. Most will take (if seriously studying, and depending on existing work load) about 6-8 weeks - but you can usually go at your own pace (so shorter or longer learning terms are possible). I'm partial to Coursera's and Udacity's courses, mainly because in 2011 I took Andrew Ng's "ML Class" MOOC and Norvig/Thrun's "AI Class" - from both of which Coursera and Udacity (respectively) were founded.

    Later, in 2012, I took Udacity's CS373 course (it was titled differently than today's offering, but I highly recommend it regardless). Today, I am enrolled in and progressing through the Udacity Self-Driving Car Engineer Nanodegree (so I am a bit biased, I suppose).

    The tough thing about learning this stuff on the internet, without going thru a well-known MOOC or other vetted source, is knowing what you're learning is valid to learn. There is a ton of information out there purporting to teach you about neural networks or other "AI" tools - and they are actually teaching out-of-date technologies and techniques. But without having a grounding in the long history of machine learning (and AI) as a field, you wouldn't know this. It can be very confusing. There have been some good postings here on HN that have given some details on good resources, so you might want to check those out. There's nothing wrong with learning historical methods (in fact, I encourage it - I believe that one can't really understand a subject until they understand the paths that were taken in the past - whether they led to failures or to success for the period). But you don't want to learn something that is actually sub-optimal for the task.

    Finally a couple of other points: Do you know what MNIST or ImageNet is? If not, then you need to learn about datasets and where to get them. Also, for a real CNN, look into the history of character recognition using the MNIST dataset - eventually, you will find a guy named "Yan LeCun" - who is one of the original people who led us down this whole CNN and Deep Learning path (along with plenty of other names).

    There is so much out there (much more than I can summarize here) - you have the interest, I can see that. Take the time to properly learn this stuff, and you'll be rewarded with some interesting results.

  5. Mentionscr0sh2017in “TensorKart: self-driving MarioKart with TensorFlow”
    As someone who's interested in taking the Udacity course, would your recommend it?

    So far, yes - but that has a few caveats:

    See - I have some background prior to this, and I think it biases me a bit. First, I was one of the cohort that took the Stanford-sponsored ML Class (Andrew Ng) and AI Class (Thrun/Norvig), in 2011. While I wasn't able to complete the AI Class (due to personal reasons), I did complete the ML Class.

    Both of these courses are now offered by Udacity (AI Class) and Coursera (ML Class):

    https://www.udacity.com/course/intro-to-artificial-intellige...

    https://www.coursera.org/learn/machine-learning

    If you have never done any of this before, I encourage you to look into these courses first. IIRC, they are both free and self-paced online. I honestly found the ML Class to be easier than the AI class when I took them - but that was before the founding of these two MOOC-focused companies, so the content may have changed or been made more understandable since then.

    In fact, now that I think about it, I might try taking those courses again myself as a refresher!

    After that (and kicking myself for dropping out of the AI Class - but I didn't have a real choice there at the time), in 2012 Udacity started, and because of (reasons...) they couldn't offer the AI Class as a course (while for some reason, Coursera could offer the ML Class - there must have been licensing issues or something) - so instead, they offered their CS373 course in 2012 (at the time, titled "How to Build Your Own Self-Driving Vehicle" or something like that - quite a lofty title):

    https://www.udacity.com/course/artificial-intelligence-for-r...

    I jumped at it - and completed it as well; I found it to be a great course, and while difficult, it was very enlightening on several fronts (for the first time, it clearly explained to me exactly how a Kalman filter and PID worked!).

    So - I have that background, plus everything else I have read before then or since (AI/ML has been a side interest of mine since I was a child - I'm 43 now).

    My suggestion if you are just starting would be to take the courses in roughly this order - and only after you are fairly comfortable with both linear algebra concepts (mainly vectors/matrices math - dot product and the like) and stats/probabilities. To a certain extent (and I have found this out with this current Udacity course), having a knowledge of some basic calculus concepts (derivatives mainly) will be of help - but so far, despite that minor handicap, I've been ok without that greater knowledge - but I do intend to learn it:

    1. Coursera ML Class 2. Udacity AI Class 3. Udacity CS373 course 4. Udacity Self-Driving Car Engineer Nanodegree

    Do you think the course prepares you enough find a Self-Driving developer job?

    I honestly think it will - but I also have over 25 years under my belt as a professional software developer/engineer. Ultimately, it - along with the other courses I took - will (and have) help me in having other tools and ideas to bring to bear on problems. Also - realize that this knowledge can apply to multiple domains - not just vehicles. Marketing, robotics, design - heck, you name it - all will need or do currently need people who understand machine learning techniques.

    Would you learn enough to compete/work along side people who got their Masters/PhD in Machine Learning?

    I believe you could, depending on your prior background. That said, don't think that these courses could ever substitute for graduate degree in ML - but I do think they could be a great stepping stone. I am actually planning on looking into getting my BA then Masters (hopefully) in Comp Sci after completing this course. Its something I should have done long ago, but better late than never, I guess! All I currently have is an associates from a tech school (worth almost nothing), and my high school diploma - but that, plus my willingness to constantly learn and stay ahead in my skills has never let me down career-wise! So I think having this ML experience will ultimately be a plus.

    Worst-case scenario: I can use what I have learned in the development of a homebrew UGV (unmanned ground vehicle) I've been working at on and off for the past few years (mostly "off" - lol).

    Appreciate your input.

    No problem, I hope my thoughts help - if you have other questions, PM me...

  6. Mentionsqxcv2012in “Google’s Self-Driving Cars Are Going to Change Everything”
    so when the cats lays in front of it -- it will just run over it, not being able to see it?

    LIDAR stands for Light Detection And Ranging. Much like sonar (which is also used on an autonomous car) it is used to map 3D environments, producing models which can then be analysed by the computer. A plastic bag lying perfectly flat on a road would look like sensor noise, whereas a cat would be a noticeable obstacle (much like a fallen garbage bin or a basketball). This clip[0] from Udacity's CS373 class is great if you want to find out what an autonomous car "sees". In short, if you're a two dimensional cat, you're in trouble. Otherwise you should be fine :)

    Usually after 10 years of deep investigation,

    What? I said "I'd imagine..." because that part of my post was pure speculation since AFAIK nobody has ever been in a serious autonomous car accident.

    I guess what I was trying to say is that I think getting killed by a car driven by machine feels easier on your conscious than being killed by a car who is driven by a human.

    Touché, fair point.

    [0]: http://youtu.be/XZL934YQ-FQ - you can skip to 0:55 if you just want to see the LIDAR-generated model

Related courses

Keyboard

In the course grid
←↑→↓
Move between courses
Home End
Start / end of row (with Ctrl: first / last)
PgUp PgDn
Jump several rows
Enter
Open course
S
Save / unsave course
1–5
Best, Trending, Hidden gems, Evergreen, Saved
[ ]
Previous / next topic
On a course page
← →
Previous / next course in your list
S
Save / unsave
O
Open the course website
Esc
Back to the grid
Everywhere
/
Search
T
Light / dark theme
?
This help