Stanford Free Classes – A review from a Stanford Student
pennyhacks.com
pennyhacks.com
1) The amount of rigor and work required for the Stanford classes was significantly less than the UW classes. I spent as much as 10 hours per week on the UW homework in addition to the 3-4 hours of video lectures. That's against about an hour for the Stanford homework and another 60-90 minutes for the lectures. I agree with the OP's description of the ML homework as starting out at a decent level of difficulty and quickly becoming trivially easy.
2) I found the format of the Stanford lectures considerably easier to follow. By making a canned recording, there's a huge amount of dead time which can simply be edited out of the lecture. That plus the ability to watch at 1.5x speed meant that I was rarely tempted to do something else at the same time as watching the lecture -- something which frequently caused me trouble with the UW classes.
3) The UW classes were something like $3500/course. If my employer hadn't been willing to reimburse me, I wouldn't have taken them.
All-in-all, I think the Stanford classes are great experiments in which I'm happy to participate. I'm planning to take five of them in Jan-Mar.
- Applying known ML algorithms to a real world task
- Coming up with new ML algorithms and research
It turns out (ahem) that the first goal, applying ML, is not only much, much higher in demand than the second goal, but is also much, much easier to teach than the content required to pursue the second. This dichotomy is the reason the split between CS229a and CS229 in both content and audience works so well. The demand for CS229 is low and the rigor is high (so it should be priced high), and the demand for CS229a is high and the rigor is low (so it should be priced low.) The author signed up for the wrong class. I think Stanford is teasing out subfields of CS that have this quality, and there sure are many.
For the rest of us, what classes are these? Part of the reason an easier class is better for the public is because there's just less time for working people. If the difficulty/time commitment for the offered classes next semester are substantially more than 229a I'd imagine you'll see a much higher dropout rate not due to lack of ability but due to lack of time. It seems odd Stanford would try to pack a "real" course into the online/public format, but at the same time seems odd they'd dilute a "real" course for their undergraduates.
this i guess is not to ease for lazy slobs (what you described :) but to ease the demand for help on the staff.
The critic is that they overdid
There's no reason a class can't have the same material presented two (or three or twelve) different ways for multiple audiences.
There's no reason a class needs a "start date" and an "end date." We can grow classes to be about communities, not authorities. None of us are as smart as all of us.
We shouldn't copy the Boring Ole' Lecture Format (and especially not "camera up my nose while I write on paper") when we could be doing so much more.
- Scale traditional educational techniques (lectures, homeworks, schedule) to a class size of 100,000 people
- Come up with an altogether new way to teach and assess students by taking advantage of the web
It's probably a good idea to figure out the bugs in solving the first problem before tackling the second.
So - people still learn together, just not necessarily concurrently.
I think this course would be great for what it does if they made the programming projects a bit harder and maybe labeled it an intro level course (CS129?). I totally agree with the posters sentiments -- I'd much rather have a harder class where you interact with other students to learn more complex material.
If that was indeed the goal, the endeavour should, in my opinion, be considered an amazing success.
An easy way to make the assignments harder (and maybe more fulfilling), if you have the time, might be to ignore much of the handholding (e.g. by porting everything to a very different programming environment).
Ideally, online courses like that would be "infinite" and personalized, giving everyone as much depth (and breadth!) as desired (with a "baseline" approximately equal to the 2011 class) and taking existing knowledge into account.
Eventually, we'll all get our Primer!
Morever, a good chunk of stanford CS classes are already offered online through SCPD (the professional development system) and as far as I know, the structure of those classes remain unchanged.
ml-class.org does a phenomenal job in equipping you with the practical knowledge needed to apply the tools of machine learning to real problems.
There is no reason why learning to use these tools should be hard. If you want a challenge, there are plenty of problems in the world amenable to solution via machine learning, especially in today's data deluge.
If you want a deep mathematical appreciation of the algorithms and their derivation, you should do CS229, not CS229a.
The author should have taken CS 229, but instead took CS 229a and was disappointed. He then overgeneralizing from his 229a experience about the future of Stanford CS education.
20,000 "certification" exams @ $99.00 each is not insignificant. It's just shy of 40 full-time students @ $50,000 per year.
Heats a lot of buildings.
Stanford's total enrollment is about 20,000 students. $35,000 per year = $700,000,000.
Offer 16 new online courses which yields 20,000 students per course taking a $99 final exam. $31,680,000. Less than 5% of annual tuition-based revenue. That's a new library without hitting the endowment fund, underwriting existing salaries, funding pension obligations, or adding a new facility dedicated solely to the production of online educational content.
I think Leland and Jane Stanford would be proud to know that the memorial they built to their son is today moving in the direction of educating millions worldwide.
It's okay to "be strong and stay strong and while being of benefit to others."
These classes are also highly vulnerable to cheating and you can be sure that a large number of people will take advantage of this to pump up their resumes.
This may lead to dumbing down of courses(to an extent) to get more users. But sure, they don't want to harm the main business.
On the other hand, I am very happy that they are doing it, and I intend to take as many as my time will allow. And I wish they'll figure out a way to charge a small fee for having "Stanford" in the title in some manner, so that they don't have to spend about half of the certificate of accomplishment making sure that everybody understands that this is _not_ an actual Stanford certificate.
I actually wasn't aware that the online class was being offered for credit in the CS department until reading this. It surprises me that they're doing so.
Lecture live, record the lectures. EVERY speaker is more effective when they have the feedback of their audience's faces.
Expect the members of the public to meet the class' standard, don't shrivel the curriculum to match the public. An applied CS course that doesn't demand programming is bizarre. Flunk everyone if you have to. Grades should perhaps reflect understanding?
My worry, which is similar to the worry of the student in the linked post, is that these lectures may be devaluing the in-person versions of the course. CS 229 was one of the top 5 hardest classes I have ever taken. I would rather not someone else take it via a dumbed down online lecture and say "I did that too! It wasn't so bad!"
There was one "brutally difficult" class at MIT that I loved, though: Structure and Interpretation of Computer Programs. It would be nice if all brutally difficult classes came in a less brutal version, though. That level of difficulty is great if you adore the subject matter, as I adored SICP, but if you only like it instead, this type of class can give you a permanent aversion for the material rather than transform you liking into love.
I feel that MIT's Signals and Systems did this to me. There's no way that having to do ten pages of algebra (e.g., Laplace transform, inverse Laplace transform, simultaneous equations) to solve a single homework assignment, multiplied by ten for the entire problem set, was ever going to do anything but give me a permanent aversion for the subject matter.
But at the same time, some of the classes had very difficult subject matter and the professors were actually interested in teaching students instead of torturing them. So it wasn't totally a bad experience.
I guess there is some value in having these online classes because they motivate professors to make their subject matter more palatable. I just don't want my degree devalued by people who aren't as astute as yourself when it comes to the gap between the online courses and those taken by Stanford students.
I can certainly understand this worry, but I don't think you really have to worry too much about this. Those who matter will always know the true value of a Stanford education. It's not quite as good as an MIT education ;) but it's right up there.
When I worked at Harvard a few years ago, there was a tempest in a tea pot over Harvard Extension and Hillary Duff. The media got wind that Hillary was taking some distance learning classes via Harvard Extension and referred to her as a "Harvard student". Harvard Extension is an excellent institution, and Harvard should be commended for running it, but it is rather different from Harvard College and Harvard Graduate School of Arts and Sciences. Harvard Extension, for instance, has no admissions requirements. They accept everyone, but you can't stay in it unless you get decent grades.
In response to the news stories about Hillary, The Crimson published an editorial that was extremely snide about Ms. Duff being a "Harvard (extension) student". This editorial did not make the undergraduate population of Harvard look good. It made them look like a bunch of unsympathetic brats. Sure, it might be a bit annoying if you feel that any ol' person can claim to be a Harvard student when you worked hard your entire life to get into Harvard. On the other hand, when it matters, there is unlikely to be any real confusion, and there is no real devaluation of a Harvard College degree.
It is true that some people do through a bit of vagary to pass off their Harvard Extension degree as a Harvard College or Graduate School degree, but when you catch someone in this, it just makes them look rather bad.
In summary, I hope that Stanford students don't make the same mistake that the Harvard Crimson made. If I didn't know a bunch of Harvard students personally, the Crimson article would have reinforced a bad taste in my mind about Harvard students in general.
You can't make those sorts of claims and at the same time try to protect the reputation of the institution by saying that the online class is not as rigorous as the "real" Stanford class.
There's some actual danger in devaluing Stanford's rep here.
In the database class they did say that this class wasn't terribly different from the real Stanford class, but that the Stanford students would probably be assigned a bit more of the problems that were particularly challenging. Those questions, however, were pretty much the least valuable questions in the entire class, since they had little relationship to any kind of query you'd ever use in the real world. I.e., they're the kind of question that teachers like to put in there so that you can have a more distinct grading curve. In any case, the database class was a fair amount of work, so I don't think that it is likely to make a Stanford education seem too easy.
The Machine Learning class, on the other hand, never made any claim at all of being remotely like the real Stanford class. Their only claim was that it would give you a good foundation to use Machine Learning techniques in the real world. That is a completely true statement. As it turns out, however, Stanford did offer the free Machine Learning class that I took as a real Stanford class for those at Stanford who wanted an easier version of Machine Learning.
But when the lecturers at hand are professors who have spent decades teaching to a room full of students who become visibly impatient, confused, eager, or antsy --- they should keep doing that.
To keep a pleasant rhythm to instruction, many professors tell jokes; I think it's VERY hard to tell a joke to a webcam when you are used to an audience.
I do think that he occasionally would belabor the obvious, but for the intended purpose of the class, I think that it is better that he erred on the side of being too clear, rather than on the side of being opaque.
Vocabulary is very important. But in addition to knowing the meanings of words, its important to know why concepts are carved up the way they are. Why divide the world into supervised and unsupervised --- what does carving at that joint win us?
Getting people interested is what the first week is for. The other eight, I feel, should try to satisfy the curiosity the first week sparked.
I'm not sure that I get you. Why we have both supervised and unsupervised algorithms was made pretty clear to me in the class. And just what more difficult material would you have liked to seen? The real Stanford class is made more difficult largely by doing lots of difficult math proofs. I emphatically disagree with any assertion that this free class should be so math heavy. What would be the purpose of that for the intended audience? Sure, such work would make fine extra credit, but making effective use of algorithms rarely relies on on a ability to mathematically prove that they have the properties that they do.
I think that a big final project, as is required in the real Stanford class, on the other hand, would have a lot of utility for the intended audience. But as that would be impossible to automatically grade, that's a non-starter.
My own experience with ML is so narrow, it's hard for me to say what else should have made an appearance --- I made up the example that you rightly called me on. I worked with a research group on a reinforcement-learning system with a silly name, and we used a whole messy pile of linear algebra. I guess I shouldn't have expected to recieve the same kind of grounding in all the ML topics.
I agree that projects would make for a huge improvement. They are difficult, but no more difficult than they need to be, and practical. You're right, grading 20,000 of them would be madness. And maybe that's OK --- what's wrong with assigning work that won't be graded?
(OK, there are lots of things wring with it, starting with motivating the student to do the work, and ending with the lack of quality feedback. But even suggesting projects for self-directed students might be enough to get a blog-ecosystem going.
I don't know much about pedagogy --- I'll talk to some people who do, and maybe they'll dope-slap me into agreeing with you totally.)
But I don't think we disagree particularly -- math should only appear when necessary to understanding. Easy things shouldn't be made difficult just for the sake of some kind of scholastic masochism. But difficult things should be attacked with vigor, and not nerfed for the sake of the audience.
I've heard some people complain that the programming assignments in the Machine Learning class were too easy. A specific complaint is that they provided all the equations and explication you needed right in the homework statement rather than having to remember it from the lectures. Personally, I find this approach to be the best way to learn. My favorite approach to learning has always been "workbook" based, where the lessons and problems to solve are in self-contained lessons. Give me material like that and I can learn anything. There are entire classes at MIT that I did extremely well in because they were workbook based. And I took Organic Chemistry and got an A+ in the first half of the class because it was workbook based. They thought I was a genius. Then the second half of the class used the more traditional approach of reading 100 pages a week of terribly boring and dense textbook. I got a D- in that half. Fortunately, it averaged to a C and I passed the class, but if the entire class had been workbook based, maybe I'd be doing something great with Computational Chemistry at the moment.
Back to the actual ML class, I've only completed the first few programming exercises as of yet, as I was also taking the database class, which actually turned out to be a lot of work. I've heard that in the ML class, the programming exercises become progressively spoon-fed, and ultimately not much of a challenge. That's not good, if true. While I do think that all the information you need should be at hand, you should still be given challenges that make you think. All the thinking should not be done for you.
"Stanford “free” classes aren’t free. Stanford students have to pay for them. The fact that I’m paying for them doesn’t bother me, the fact that people who aren’t paying for them have changed the class more than the ones who have, does."
which does seem to be a forceful point. However, checking the FAQ (http://see.stanford.edu/see/faq.aspx#aboutq2) we find that they are funded completely from outside sources. So this guy didn't even bother to do some basic Google checking.
They seem to be two different initiatives. I know for sure that the ones on the SEE page are recorded video lectures from the actual live classes.
Another difference with the course offered to the public is that there is an open ended project.
If he really wanted a harder class, why not take CS229 and not CS229A...
If you want something to be harder, to get more out of something you should pursue it yourself, not depend on others.
I see (online) education as a guide, not as the only source of input. Selfstudy and initiative is the most important thing.
It was intended as a general comment that some people might not like it and equate it like that based on his comment that only a fraction people actually attended it and maybe if it was made compulsory they might not like it and there is a probability that they will say that.
Just a point that what ever you do there will be some group that will not like it .
Yes, the class was a fun introduction to AI. But no, it did not offer a deep and thorough theoretical foundation that I would expect from a Stanford class.
guessing none of the classes this spring will have anything close to that enrollment
When you're not awarding a degree anyway, that consideration is irrelevant, and the only requirement is to teach as clearly and effectively as you can.
Of course, you could certainly have asked, as a Stanford student, what drove the design of the course and how the professor actually felt about the execution. That would have been an interesting follow up.
Professors have been complaining for decades that students don't start their classes with the basics already down. Making a video version of this class, even one that only teaches the first half of the real class, means the professors will start to expect the students know that part already and the real class will expand to include even more advanced topics.
There's no danger of Stanford or Harvard or MIT or anyone else making things easy on their undergrads.
Just ranting out here so feel free to ignore :-)
This is not really aimed at the author but towards the "elite" group. There was another elite commentator in one of the other thread who said he dropped out of ML class because This course included gems such as "if you don't know what a derivative is, that is fine" and he thought math was important in ML. Before the ML class I could not even argue with these guys because I did not know squat about AI and talking to these experts their advice was to take a year off and learn math and then start learning AI which in my case was not possible. Today after a couple of months of online classes I am actually using ML in my daily work and its not magic that only the elite with deep profound math knowledge can use. Another programmer who is working in khan academy actually had a blog post about how he implemented ML by learning from Prof Andrew's class now that is real world impact. I may be missing something but can one of you experts please explain why you need deep math knowledge when the professor who has been doing a lot of research in this field a lot more than you does not think so ?. The professor in his classes keeps reassuring that even after using it for so many years he has difficulty in the subject but I'm guessing these experts know it all :-).
This is the reason in my opinion even though wall street is full of smart people they do not care about the rest of the population or the general masses the attitude is we are smart and we can do what we want you guys are dumb and deserve what you get and if someone outside of their elite group starts talking their language they do not like it.
On a similar note when you look at the people complaining about khan academy most of them are these so called smart people.
Let me talk about my background I have been working as a programmer for around 11 years , no math background though thought myself math by using Khan academy and before my layoff (now am working on my own startup ) used to make 90K (in a southern state).
So guys you are not the center of the world we are crashing into your fraternity you are no longer the only experts who can talk about ML , the guys at stanford are smarter than you and know what they are doing and FYI they don't need you its the other way around. Another interesting thing is that mostly the current students seem to agree with the author, If you are smart you should probably take the effort to learn more rather than asking them to tailor the classes to what you think matters . Also ask yourself this question if you were the Professor what do you think is more satisfying teaching 40 full time students or 20000 who are in the field already and make more impact in the field ?.
Coming at it from my perspective (learned a lot of math in high school, forgot most of it until I started a PhD), i would agree that a lot of the time, you don't need to understand the mathematical underpinnings of this stuff. That being said, as I've learned and remembered more of the math, my capability to understand (and debug errors) of all of this has increased tremendously.
I do think, if you intend to use ML every day, then you need to commit to understanding everything you use within a certain time frame of you beginning to use it (ideally immediately but that's often not possible). Anyway, derivatives are cool, and transform the way you look at the world, so you should definitely learn some of those.
A lot of the things I've learned in AI class are pretty darn simple, once explained properly. So far all this knowledge has been hidden behind jargon and badly defined notations. IMO, the guys at Stanford are liberating it.
Moreover, this is the first time in my life I'm actually seeing a practical use for things like derivatives in programming I can relate to. Sure, I know there are, theoretically, lots of different applications, but I've never seen them since college. Seeing an example of a practical application makes me more interested and more likely to deepen the knowledge of the underlying math.
I belive that this might be the article in question:
http://david-hu.com/2011/11/02/how-khan-academy-is-using-mac...
It's not about you. Math does not exist to exclude you. People who use math are not trying to exclude you, they are just trying to make their jobs easier. Math can be just as accessible as this ML material when taught properly.
If your point is that more effort needs to be made to teach advanced topics in accessible ways, well, duh. That's a straw man.
I'm sorry that you feel so alienated from institutions like Stanford that you feel the need to compare their students to "wall street elite" that "do not care about the rest of the population" who "deserve what they get" for "being dumb." I think this rhetoric is out of line on HN.
If the author wrote, "CS 229A lets in the riff raff, I don't like those people" then you'd have a point. But that's not what he wrote. He's simply looking to learn more and get his money's worth. As others here pointed out, he probably should have taken the full CS 229 instead.
And then something began to happen the more I learned. I no longer thought I need naive bayes this, Decision tree that, random forest there or whatever. I thought I need this concept from statistics or that idea from information theory, i just need to group and count there and that loss function is useful here. So I could come up or modify something to my need. As I go long I am finding that while before I looked for an excuse to use something fancy sounding now I prefer to go as simple as possible - but without having gone through the hard stage I could not appreciate where the simpler solution is better.
I also learned a great deal of differential calculus when implementing an automatic differentiator (a backpropogating Neural net is basically just a special case of reverse auto diff). Its fast can work with decent sized vectors (10^5 - 10^6 entries I tested) and can do gradients, hessians and jacobians of arbitrary functions. I also expect that I can easily extend it to be able to work with tensors although I haven't needed them yet. Using it I wrote a stochastic gradient descent algorithm and can plug in arbitrary loss functions and a whole bunch of algorithms just merge. I could also easily write say L-BFGS for it. Neural networks, logistic, linear regression, support vector were basically just swapping out one line.
This flexibility is what you gain.
===========================
In the below fn is an arbitrary mathematical function such as
let eq1 (x:float[]) = 1. - 4. * x.[0] + 2. * x.[0] ** 2.- 2. * x.[1] **3.
let newtonOpt prec iters fn (guess:float[]) =
let rec iterate delta iter cguess =
match delta with
| _ when delta < prec || iter > iters -> cguess
| _ -> let h = hessian cguess fn
let _, g, _ = grad_ cguess fn
let gs = cguess - m.Inverse() * g
let cdel = (gs - cguess).Norm(2.)
iterate cdel (iter + 1) gs
iterate Double.MaxValue 0 guess
example of a loss function [<ReflectedDefinition>]
let llog (cx:float[]) _XdotW y = y * log (1./(1. + exp(_XdotW))) + (1. - y) * log(1. - (1./(1. + exp(_XdotW))))Example: The 'level 1' or 'core' videos and assignments can be a base and offered for free and be of a similar duration and difficulty as the class now...
'Level 2' would either replace or augment the 'level 1' and would be more advanced and require some knowledge of pre-requisites and more 'synthesis' or 'critical' style assignments and less hand holding. Maybe they could charge for access to this level...
'Level 3 etc' could go deeper into the topic and perhaps offer more mathematical rigor or dive into more advanced topics or expose students to related current research etc. The assignments could also be tougher and more free form. Depending on how much human interaction is needed on the assignments and whatnot, they could justify a much higher price...
I would be very interested in a program that had this kind of format.
It would allow for exploration without too much commitment but a deep dive on topics that are interesting and perhaps a window into a community of people exploring the same topics...
If I were paying Stanford level tuition for the class as it stands now, I'd be a bit disappointed too.
Of course there is. These classes are provided for free, yet require time and money and effort. You've likely more than tripled the required resources to produce the class.
But it would be nice to explore topics at the most shallow level for free or at a low price to see if it covers what I expect in a manner that I find useful. Basically, a funnel.
I think the issue here is what we are witnessing, aside from the awesomeness of open courseware, is the evolution and continued maturity of Computer Science as a discipline, as it takes more and more mathematical concepts into its fold.
Machine Learning is growing up as a foundational pattern / algorithm that has evolved from research to applied to basic-building-blocks-everyone-should-know. Yes, it took the Valley and Stanford to liberate it (as a poster indicates somewhere here), but that's ok. There is as much street cred in understanding how to implement/design practical applications using ML as there is in pushing the frontier on new ML mathematical techniques. That's how new commercial innovation takes place. You need both sides of the equation; the research and the practical. The course chose a balance that favored the latter, because prior to this little existed. You can hear it in Prof. Andrew Ng's videos... "this is big in the valley"..."you now know how to implement XYZ"... "if you ask these questions on an ML product, you can save your tea, time and money" (I'm paraphrasing).
Recall that at one point, logic/truth tables, sorting algorithms, graphs, etc. all needed to be derived mathematically with their proofs. But then they became axioms and codified as foundational building blocks of CS that just work, enabling us to focus on the next step in the evolution. We don't question or even think twice today when implementing "if (X && Y)".
Perhaps this class happened to be taught at an easier-than-usual level. But, if professors are torn between the demands of simultaneously serving dedicated (paying or non-paying) students and casual students, the compromises won't always be to the benefit of the dedicated.
It is not just a recording of a "normal" lecture...