I'm a little curious about some of the style choices in python code. For example:
# used by Sebastian
for k in range(len(measurements)):
p = sense(p, measurements[k])
vs
# shorter, saner, and more Pythonic
for m in measurements:
p = sense(p, m)
I guess the old aphorism applies: a good Pascal programmer can write Pascal in any language. (Not to criticize Sebastian's programming ability, only to wonder about the pedagogical choice.)
I also thought that was odd, and used the latter version in the first few exercises. But later there was some code of the form:
def move(p, U):
q = []
for i in range(len(p)):
s = pExact * p[(i-U) % len(p)]
s = s + pOvershoot * p[(i-U-1) % len(p)]
s = s + pUndershoot * p[(i-U+1) % len(p)]
q.append(s)
return q
where the index is used to access the previous and next elements in a list.
There's a more idiomatic way to get this index variable(http://stackoverflow.com/questions/522563/accessing-the-inde...), but using a consistent, easy to understand iteration method allows the poor confused student (i.e. me) to spend more time focusing on the concept being taught.
So the code could be intentional, or could be an accident. But I expect that sooner rather than later there will be some data to show which method, if any, is better for the students, and the classes will be adjusted accordingly.
By the way, did anyone else find these exercises addictive? I can begin to appreciate why the Farmville cow-clickers keep at it.
The version used by Sebastian targets a wider audience who are not familiar with the pythonic idioms and have just skimmed a bit of python to do the course. Using a loop over array index is the way many students iterate over an array. This should not reflect on Sebastian's coding ability.
Honestly, the class, "Programming a Robotic Car" sounded pretty lame. When am I going to program a robotic car? Never. As cool as it sounds in principle, I figured it would be pretty domain-specific and relevant only if you were doing autonomous robotics.
However, I must say that the syllabus looks amazing, and pretty hardcore. It appears to have less to do with robotic cars per se and more to do with applied controls and online machine learning. Particle filters? Kalman filters? Extracting signals from noisy sensor data? Shallow planning and search? In a way that's made applicable and not presented as just a series of proofs and theorems?
Honestly, the class, "Programming a Robotic Car" sounded pretty lame. When am I going to program a robotic car? Never.
Programming is not brick-laying. "Learning to program" is about learning to think and solve all kinds of problems, not learning now to do one specific thing that you are going to do for a job. You become a good programmer by learning about and solving all kinds of problems.
Programming a robotic car sounds incredibly awesome to me; hardly "lame", even though I never intend to work in robotics. In college, I took courses like "Filesystems" (no, I don't intend to write a filesystem), "Operating Systems" (no, I don't intend to be a Linux kernel dev), and so forth. Just because that's not what I'm doing doesn't make them interesting, useful, and fun.
A programmer who has only solved a very narrow range of problems -- and considers others s/he's not too familiar with to be "lame" -- is generally not a very good programmer.
The "Robotic Car" is nothing else but a way of attracting people to the course. Reading the contents of the course, we could easily substitute "Programming a Robotic Car" by "Artificial Intelligence for Robotics". I would like to see a bit more of Theory of Control on the topics but I guess it requires advanced Algebra.
Every time that I read about technology I feel like we have to realize that every time more generalists will be needed. Mechanics, dynamics, control, computer vision, energy, fluids, signal processing, artificial intelligence, statistics are some of the skills needed for a real Robotic Car, and of course, nobody can expect to learn them in 7 weeks.
My guess would be that the title of the class was aimed at students of ai-class.org, in which he touched on several of the topics you mention in the context of his work in automated driving. When I saw the title of the course it immediately struct me that this would be a deeper look into all the cool things he pointed out in ai-class.
I'm on my Junior year in CS major and I think I will take CS101 on Udacity. Not only do I think Udacity can do a better job than my college, but I think I can learn new things.
I only looked over the 101 course, and maybe it's not aimed at someone who already has an understanding of those concepts, but I felt like it was a really fast fly-by of topics and skipped a lot of things.
Thinking of the best way to teach this stuff is something I spend a bit of time doing, and honestly I'm not sure what the right approach is. Once I thought you should learn from Ada's work and the looms all the way up to things like the Enigma machine, and jump into the things that started happening in the 50s research. Basically, grow your knowledge from the ground up and make all the same discoveries.
The other approach is to take a high-level fly by of concepts like strings. Most of us here on HN know that strings and how they work aren't as simple as presented in the 101 videos and there's so much more to know about them.
I'm concerned that this style of teaching (implementing concepts without understanding how they work) is also the style that's lead to a lot of confusion in my personal learning experience as I progressed. Once upon a time everything in the browser like HTTP and rendering was magic and I wrote sloppy web apps. In a similar vein, I never really "got" calculus until I read a book that explained the history of how Newton made up "infinitesimals", Leibniz made up "derivatives" and someone else made up limits. I had no idea how calculus worked until I understood the origins... sure I could write differential equations based on some cheat-sheet, but that deep-rooted understanding never came along until I walked through Newton's shoes. And to be honest, it was simply the dy/dx notation that made no sense to me, and none of my teachers could explain it to me, it was always "oh, that's the derivative of that axis value" (might as well have said "oh, a monad is a monoid in the category of endofunctors").
On the other hand, learning and doing things without that deep understanding is exactly how I started programming and I turned out okay.
Key point here is that although the courses sound potentially advanced, they seem targeted towards people who are beginners at programming/computer science. I'm not entirely sure if this is stressed enough on the site.
However I'm also curious what the later units will look like, as I completed the final quiz in a few minutes for the first search engine unit without watching any lectures and without any python knowledge. Very basic stuff.
Having done the AI class last year, I have to say that I'm really positively surprised how much they apparently learned from the results of that class. Sebastian's style is way better now, with those digital scribbles and the combined programming step by step exercises for particle filters. That was exactly the stuff that threw me off sometimes at AI class (and I bet quite a few of others).
For those wondering, the first week's worth of videos/tutorials is live and watchable if you sign up (i.e. it's not a dead end like most Coursera courses currently). The quiz interface (being inlined with the video content), is quite clever.
The tech for online learning is still being developed.so the courses offered are those close to the developers'interests and competencies, much like how the internet was first used for and by scientists. But the tech will spread.
I'd love to see something like this for math. A lot of these ML, AI courses have prerequisites in math that is pretty distant for me.
I know Khan is highly praised, and I have found help there, but I find the site very unstructured. Perhaps it works best when you have an existing syllabus or path to follow next to it.
Python is really fairly easy. You shouldn't have much trouble with it unless you are a beginner in programming in general. Even then it should still be possible with a little extra work.
The course contents doesn't open on a android tablet. It says loading... for sometime, and it just stops after that. I tried with stock browser and Dolphin browser and both have the same issue.
[+] [-] jholman|14 years ago|reply
[+] [-] nswanberg|14 years ago|reply
There's a more idiomatic way to get this index variable(http://stackoverflow.com/questions/522563/accessing-the-inde...), but using a consistent, easy to understand iteration method allows the poor confused student (i.e. me) to spend more time focusing on the concept being taught.
So the code could be intentional, or could be an accident. But I expect that sooner rather than later there will be some data to show which method, if any, is better for the students, and the classes will be adjusted accordingly.
By the way, did anyone else find these exercises addictive? I can begin to appreciate why the Farmville cow-clickers keep at it.
[+] [-] zaph0d|14 years ago|reply
[+] [-] sks|14 years ago|reply
[+] [-] d0mine|14 years ago|reply
[+] [-] bockris|14 years ago|reply
[+] [-] dhawalhs|14 years ago|reply
"You're the first one to pass a programming quiz! --- Dave"
Hah!
[+] [-] WildUtah|14 years ago|reply
[+] [-] frisco|14 years ago|reply
However, I must say that the syllabus looks amazing, and pretty hardcore. It appears to have less to do with robotic cars per se and more to do with applied controls and online machine learning. Particle filters? Kalman filters? Extracting signals from noisy sensor data? Shallow planning and search? In a way that's made applicable and not presented as just a series of proofs and theorems?
I've signed up.
[+] [-] DarkShikari|14 years ago|reply
Programming is not brick-laying. "Learning to program" is about learning to think and solve all kinds of problems, not learning now to do one specific thing that you are going to do for a job. You become a good programmer by learning about and solving all kinds of problems.
Programming a robotic car sounds incredibly awesome to me; hardly "lame", even though I never intend to work in robotics. In college, I took courses like "Filesystems" (no, I don't intend to write a filesystem), "Operating Systems" (no, I don't intend to be a Linux kernel dev), and so forth. Just because that's not what I'm doing doesn't make them interesting, useful, and fun.
A programmer who has only solved a very narrow range of problems -- and considers others s/he's not too familiar with to be "lame" -- is generally not a very good programmer.
[+] [-] tassl|14 years ago|reply
Every time that I read about technology I feel like we have to realize that every time more generalists will be needed. Mechanics, dynamics, control, computer vision, energy, fluids, signal processing, artificial intelligence, statistics are some of the skills needed for a real Robotic Car, and of course, nobody can expect to learn them in 7 weeks.
[+] [-] Homunculiheaded|14 years ago|reply
[+] [-] graeme|14 years ago|reply
1. The videos are supplemented by written course notes. This is useful for people (like me) who prefer text to video.
2. There are quizzes to confirm understanding, and they come very shortly after learning a concept. This provides fast feedback.
Crucially, the quizzes can be repeated until you gets the answer right, and an explanation follows.
The first lesson is pretty basic, but the overall learning framework seems promising. It's focussed on making sure you understand.
I'm just using this as a supplement, but it will be interesting to see where it goes.
[+] [-] marcoamorales|14 years ago|reply
[+] [-] bdg|14 years ago|reply
Thinking of the best way to teach this stuff is something I spend a bit of time doing, and honestly I'm not sure what the right approach is. Once I thought you should learn from Ada's work and the looms all the way up to things like the Enigma machine, and jump into the things that started happening in the 50s research. Basically, grow your knowledge from the ground up and make all the same discoveries.
The other approach is to take a high-level fly by of concepts like strings. Most of us here on HN know that strings and how they work aren't as simple as presented in the 101 videos and there's so much more to know about them.
I'm concerned that this style of teaching (implementing concepts without understanding how they work) is also the style that's lead to a lot of confusion in my personal learning experience as I progressed. Once upon a time everything in the browser like HTTP and rendering was magic and I wrote sloppy web apps. In a similar vein, I never really "got" calculus until I read a book that explained the history of how Newton made up "infinitesimals", Leibniz made up "derivatives" and someone else made up limits. I had no idea how calculus worked until I understood the origins... sure I could write differential equations based on some cheat-sheet, but that deep-rooted understanding never came along until I walked through Newton's shoes. And to be honest, it was simply the dy/dx notation that made no sense to me, and none of my teachers could explain it to me, it was always "oh, that's the derivative of that axis value" (might as well have said "oh, a monad is a monoid in the category of endofunctors").
On the other hand, learning and doing things without that deep understanding is exactly how I started programming and I turned out okay.
[+] [-] aik|14 years ago|reply
However I'm also curious what the later units will look like, as I completed the final quiz in a few minutes for the first search engine unit without watching any lectures and without any python knowledge. Very basic stuff.
[+] [-] worldimperator|14 years ago|reply
[+] [-] newhouseb|14 years ago|reply
[+] [-] TechNewb|14 years ago|reply
[+] [-] skanuj|14 years ago|reply
[+] [-] abless|14 years ago|reply
[+] [-] itmag|14 years ago|reply
When will we see courses on psychology, Spanish, martial arts, etc? What would those courses even look like in an e-learning format?
[+] [-] dpatru|14 years ago|reply
[+] [-] motxilo|14 years ago|reply
[+] [-] ramblerman|14 years ago|reply
I know Khan is highly praised, and I have found help there, but I find the site very unstructured. Perhaps it works best when you have an existing syllabus or path to follow next to it.
It's also somewhat limited to college math
[+] [-] scarface548|14 years ago|reply
[+] [-] weaksauce|14 years ago|reply
[+] [-] tutysara|14 years ago|reply
[+] [-] 100k|14 years ago|reply
[+] [-] cdutch|14 years ago|reply
[+] [-] graeme|14 years ago|reply
They added an improved FAQ to the main page of each course, in the overview section.