Most fun: Pat Pattison, Songwriting, Coursera. Very good lectures, very good material, very well presented. Teaches a lot about writing song lyrics in just 6 weeks, breaks it nicely down to steps and recipes. I used to think that the best feature of MOOCs is the automatic grading and feedback from programming homework, but in this course, for the homework songwriting you gave and got feedback from 3-5 random people in the course, and it was not only useful but this feeling of togetherness with strangers was even better than getting instantaneous feedback from a bot for programming homework. Shows that teaching art scales to MOOCs as well.
Nicest: Andrew Ng, Machine Learning, Coursera. Interesting topic, well-planned material, very well avoids going into the mathy details, but still conveys a feeling of understanding of the topic, so accessible to a wide audience. (Martin Odersky, Functional Programming Principles in Scala, Coursera, was almost equally nice, but had some rough edges in the first run.)
Most interesting: Probabilistic Graphical Models, Daphne Koller, Coursera. Very interesting topic. I took the first run of the course and it had lots of rough edges. Needs a lot of work to apply the lectures to the homework. I haven't seen such a demanding course since I took quantum mechanics at university.
Best organized: Jennifer Widom, Databases, Stanford. This is not the flashiest of a topic, but oh boy was it well organized. Runs like a clockwork. Everything in the lectures is relevant, everything from the lectures is applied and tested in the homework, there is lots of homework (but still not enough to make you remember SQL,XPath,XQuery,XSLT for the rest of your life if you don't keep using them), weekly homework has a nice progression from simpler things to medium difficult things, and the web environment is well designed, and gives wonderful feedback and guides you to get your queries correct.
> Nicest: Andrew Ng, Machine Learning, Coursera. Interesting topic, well-planned material, very well avoids going into the mathy details, but still conveys a feeling of understanding of the topic, so accessible to a wide audience. (Martin Odersky, Functional Programming Principles in Scala, Coursera, was almost equally nice, but had some rough edges in the first run.)
Have to agree with all of this. I've taken Andrew Ng's Machine Learning course (only time I've paid for a 'verified' certificate), and found it a great overview of ML, though I'm not sure I'd feel comfortable telling anyone I have a good understanding of ML :)
Odersky's FP in Scala was actually the first Coursera course I took (during its initial run, I think). -- I also found the follow up Reactive Programming course to be excellent as well.
I too loved Odersky's course. It was definitely rough, but having the creator of a language teach a course about it provided insights that I wouldn't have gotten otherwise.
The Odersky's course is phenomenal. Highly recommended and it shows how much attention and craftmanship was put into designing Scala. Bonus: Martin speaks like Arnold and it's very enjoyable to have a "Terminator" voice teaching you complicated material.
Interestingly, you took the same path I did with Scala and ML. My criticism about these courses is that some of the projects and content can be too easy to get right, skimming on the surface in some areas that would need more time to grok. Lately I've moved to Udacity and there I can find more in-depth projects and discussions with virtual classmates. The price is steep but you pay for what you are getting.
Agreed Ng's Machine Learning and Odersky's FP in Scala were my favorites. I'm looking for a good bioinformatics course at the moment. I wrote a small program for my daughter that attempts to find CRISPR sites for my daughter and it would be great to know more of the background.
I wish I enjoyed Andrew Ng's Deep Learning courses. For him being the cofounder of Coursera the production quality (audio/video) was pretty lacking. The whine/distortion on the audio made it difficult to listen to on headphones. Many of the exercises were either a bit too railsroaded and simple, or poorly explained in their goals and barely worked. I really didn't like his style of writing on the digital whiteboard. Perhaps just a side effect of a MOOC, but he never checks for understanding in even the most basic of ways.
While I'm not perfect, I spent nearly 3 years teaching at a bootcamp fulltime, so perhaps I have different standards for communicating and teaching actionable lessons?
> Jennifer Widom, Databases, Stanford. This is not the flashiest of a topic, but oh boy was it well organized.
Couldn't agree more. I took this course in 2011 but didn't have a need for working with databases until 2014. Three years after I took the course I was able to jump in and work fluently on databases -- Mongo, Sqlite, Firebase, etc. The least I can say is the course helped me internalize database concepts.
This course has the right amount of handholding yet challenges you enough so you acquire long-lasting skills.
Ditto. I was able to get my foot in the door of industry due to this course and Scott Allen's PluralSight C# courses.
I've now built 2 data warehouses and helped with maintenance on another. It's not my main focus, but it's nice to be able to do it myself when the work calls for it.
I got hired at my first job out of college due to the C# ones and I've been working in C# since then, with a smattering of other languages here or there.
I studied portions of it before I got my first "real" tech job (not a call-center) and it put me on a path straight towards my career as a developer. I go back to the course every year or so and try to pick more gems out of it -- it's truly fantastic.
That was the first MOOC I took as well. It turned out to be an excellent entry point for databases. Perhaps because it was one of the first Stanford MOOCs, the quality of it was high.
This thread's full of really valuable information, so I've compiled these and a bunch of the other courses mentioned here into a big document[1]. I've also added quotes from this thread, with links back to the original comments.
Andrew Ng's class was great! For a tougher class that focuses on one of the technologies, I recommend Geoffrey Hinton's "Neural Networks for Machine Learning" on Coursera. Really eye opening for me, and fairly close to the leading edge in deep learning, as far as I can tell. I felt that the exercises were more detailed and challenging than in Ng's class, and thus I ended up learning more.
– the first course in the specialization has a very good and engaging start, but the gap between lectures and problems widens quickly after that (maybe that's why the author boasts about a "challenging" course "not for everyone"). I'm hesitant to take the next course of the specialization.
MIT had a similar course on edX and that one was brutal as well (Computational Probability and Inference). I guess nobody figured out how to teach it the easy way.
I've been meaning to either take the course or read the book. I'm curious if you've read the book [0] and how you would compare or if you'd recommend one, the other or both.
For me Bayesian networks are a tool of thought and I think it's worthy to learn them in the same way it's worthy to learn to sketch functions with pen and paper.
Yes, I think so. PGM or some improvement on that is relevant to doing things like reasoning correctly based on evidence.
I envision more sophisticated AGI systems to use DNN or other NN techniques to learn about the world, and be able to take in uncertain input and make sense of it. PGM or similar would then be used to correctly (in the mathematical sense) reason about what to do to accomplish the agent's goals.
I too took the first iteration, and it was... quite terrible.
The lectures were OK, but the homework was more than challenging. Not only had you to battle with the topic itself, but then you need to magically acquire knowledge in some totally unknown topic (I think it was genetics) and wrangle the quite baroque representation of that topic shoehorned in a programming language that is totally not made for it.
I was on the verge of despair because of those secondary problems. Really.
It's good to hear that this MOOC is still so well thought of since I first took it; for me, it was the first course I took that made me really understand how a neural network and back prop actually worked.
When I took the course, it was in 2011 - and was known as "ML Class"; yep - I was among the first "beta tester guinea pigs" of the course. It was fun and amazing to participate in.
One of the early participants was even inspired to replicate CMU's ALVINN self-driving vehicle in miniature:
Pat Pattison, Songwriting, Coursera! I took this too! Fantastic! Delightful to learn something (anything!) from someone who so thoroughly and completely knows just what he has to say to teach a topic he's expert at.
Yes, I enjoyed the Pattison songwriting class as well. At first his applying the "strong" and "weak" concepts to every aspect of a song lyric seems overly simplistic, but it actually starts to make sense. I came into class with considerably previous experience in writing poetry, but thought I learned a lot from him and my peers. His breaking down a performance coaching example was also very instructive.
Other music MOOCs I enjoyed:
The Berklee "Developing your Musicianship" series on Coursera taught by George W. Russell. Started off thinking this was too elementary, but the ear training is valuable, and I learned a lot about the use of diatonic chords, and even the few simple patterns he taught improved my song writing enormously.
The Berklee "Jazz Improvisation" class taught by Gary Burton. Very cool to be taught by a living legend, and his selection of songs was refreshingly modern. On the down side, skill levels of the students varied widely, so peer review was more miss than hit.
> The Berklee "Jazz Improvisation" class taught by Gary Burton. [...] On the down side, skill levels of the students varied widely, so peer review was more miss than hit.
100% miss for me. The main thing I learned from that course is that a "MOOC" relying on peer review for feedback is a colossal waste of time, and should have stayed as a video lecture series.
True, I did not learn much from the feedback. On the other hand, the existence of peer review might have pressured me into putting more effort into my exercises.
On the Pattison one, out of curiosity did it use his Writing Better Lyrics for the material? I've read the book and love it to pieces even though I write prose, the way he explores words and phrases is sort of magical.
I wanted to invest better so I took this course to learn the basics of financial markets (I'm a software guy and have zero training in finance). After taking it, not only do I have the basics nailed down but have gained a massive appreciation of finance as a technology that, at its best, mitigates risk and advances society.
Shiller is an authority on the topic, having won a Nobel Prize in Economics no less. His penchant for financial market history and human behavior angle on things is a massive plus for this course. I'd say the course is useful education for entrepreneurs and curious folks alike.
It's kind of crazy that, at least in the US, personal finance is not taught so much in grade school. I had to do a lot of reading and research now in my late twenties to figure out the best way to manage the RSUs I get at work and how to plan for a home purchase and retirement. It turns out (surprise) that most financial institutions don't have regular investors' best interest in mind. Instead, they see us as customers with value to siphon out over long periods of time.
Understanding how economies work[1], how financial service companies sell products, theories behind volatility and market forces, and how simple portfolio management can be goes a long way to improving an individuals ability to efficiently self-manage their finances.
The video gives a really good explanation but i loved the book he released freely along with that but maybe I have a preference for that. I am awed at by the knowledge this guy has ... If you haven't already read the book "Principles" by Dalio ( same guy)
I actually just finished this course and loved it! It covered all the financial ground that I was looking for... stock, options, brokers, financial planning, insurance, and financial theory.
As a serial MOOCist I cannot single out any one so here is a list per domain.
Data Science
Introduction to Probability - The Science of Uncertainty,math oriented MIT/EDX
Difficulty:5/5 Videos:5/5 Material and exercises:5/5 Usefulness: 5/5
Learning from Data, math oriented formerly Caltech/EDX now on caltech, check the exercises and you will see the difference in quality with Andrew Ng:
Difficulty:4/5 Videos:4:5 Material and exercises:5:5 Usefulness:3/5
The Analytics Edge - Bertsimas MIT/EDX.You will learn practical stuff in R includes a kaggle competition.
Difficulty:3/5 Videos:4/5 Material and exercises:6/5 Usefulness:6/5
Computational Probability and Inference MIT/EDX Computational probabilty using python.
Difficulty:2/5 Videos:3/5 Material and exercises:6/5 Usefulness:5/5
Basic Modeling for Discrete Optimization: Uses an easy to learn language called minizinc which has multiple backends and is useful for those types of problems. VERY pleasant to watch videos.
Difficulty:2/5 Videos:4/5 Material and exercises:3/5 Usefulness:5/5
Deep learning: deeplearning.ai coursera and fast.ai for more practical stuff.
Non data science:
I have not done the exercises on these just watched them:
Learning how to learn: Life changing I wish it existed many years ago.
Influencing People: Puts things into perspective. Makes you ponder about morality
Roman Architecture: Includes the "why" it is like the old "who moved my cheese" book, but in roman architecture edition.
Explaining European Paintings, 1400 to 1800: What it says on the tin.
Economics of money and Banking: In all tuthe courses I have listed the professors are very good. But this guy.... Makes a difficult subject so approachable and watching the news becomes as painful as watching a train full of passengers going to broken bridge
I am sure I have forgotten others
MOOCs have changed my life, financially and in other ways. I thank all the people involved.
I was a mech eng manager in industrial automation. Did the MOOCs, chose a domain, started a phd in ML and AI by showing my MOOC results, got picked during the 3rd year from one of the big consulting companies, now running a series of international projects. Banking(IT only), AI, CompVision and Analytics.
Nand2Tetris was my favorite. I can't say the information (particularly the first half) has much practical application for me, but it was a lot of fun and deepened my understanding of what's going on at a low level. Homework is very well designed with a simulator you download to test your work on, then submit for automatic grading.
Udacity's Differential Equations course was pretty awesome too. I had taken Calculus previously, but I believe it's pretty approachable even if you haven't. The homework was very well designed, and involved fun problems like computing gravitational slingshots and curing diseases.
Coursera's "The Unwritten Constitution", also has a similar "The Written Constitution". Both are pretty awesome and really gives an in depth view of what the constitution is about (spoiler alert: it's about slavery), and even points out holes that haven't been challenged yet. Homework was writing essays and grading other people's, so not that well designed in that respect.
Coursera's "Coding the Matrix" is a Linear Algebra course. I took it the first time it was offered, and you pretty much had to buy the accompanying book to follow along. And the book unfortunately had a lot of "first version" issues. A lot of the homework wasn't explained very well, but it was all auto graded code. I think the issues with the book have been addressed with the second edition, not sure about the homework. I had already taken linear algebra before, so this was mostly a refresher, but even I found it hard to follow along in the last part, and never completed the last homework assignment.
On Youtube you can find "Fundamentals of Small Arms Weapons" from 1945. It shows how the action of a small arms rifle works. It starts as just a tube with a bullet, and works up to several different types of fully automatic actions. It's just a couple hours long.
Coding The Matrix had a great concept. The learn-math-by-coding approach allows the student to see applications of the material from early on. The treatment of complex numbers was especially strong.
The tradeoff is that the student must debug during the exercises (an activity which is unrelated to the material), but it's worth it.
Regrettably, Coding the Matrix was taken down down along with a lot of first-generation Coursera courses. However, there's still the book, the website at http://codingthematrix.com and the the lectures from the Brown University version of the course:
Yes! Nand2Tetris came about before "MOOC" was even coined. It's a great course where you start building simple circuits in a hardware simulator, and eventually build a working Tetris game -- on hardware you built (running in a simulator), in an OS you wrote.
I loved both Nand2Tetris and Coding the Matrix, although I had different experiences with them. For Coding the Matrix, I didn't buy the book, but just watched the videos and worked through the course work. This was super fun, but I could see someone who was not proficient in python getting really frustrated. I took it the first time it was run as well, and there were a couple of rough areas, but overall it was really enjoyable.
With Nand2Tetris, I just bought the book and worked through it without taking a class. I'd sketch out the hardware literally on the back of napkins and then try it in the simulator when I got home. It was incredibly fun, and I loved how it took everything down to first principles.
Lectures are great. Material is at a solid undergrad level (should be suitable for someone with 1-2yrs of CS background). No programming assignments, so I would go look at Phil Levis's website to find the "regular" course website and do the programming assignments from there.
Would you say this course would help learn languages? I'm currently self-studying Japanese, so adding another "class" would be difficult time-wise. But if this Coursera course would help, it might be worth the time for me. Thanks!
Self-taught Japanese, Chinese, etc. Course changed me. Wouldn't be a programmer without it.
Sidenote, there's no PM function here, but my email's in my profile. Shoot me a note if you want any tips on Japanese etc. Got decks of anki flashcards for daaaays.
Too late to edit, so, summary of what I sent OP in my email:
1. Taking the coursera course probably a valuable use of time, alongside more general "meta-learning" about personal psychology. Books such as "How to Win friends..." "Power of Habit..." "Wherever you go, there you are..." etc
2. Use "anki" or "ankidroid" depending on platform. Get public decks "Hiragana with stroke diagrams and audio," "Kana (katakana)," "Core 2k/6k optimized Japanese vocabulary," and use following youtube video to then create forward/backwards cards: https://www.youtube.com/watch?v=DnbKwHEQ1mA
5. Create and write down a clear reason for learning Japanese, and potentially book a flight (well ahead of time, and if economically viable) to set a concrete timeline for learning.
EDIT: By the way, the "Core 2k..." cards have example phrases for every word. I don't recommend trying to memorize these, but I do recommend reading the sentence out loud for every card. Muscle memory, further familiarity with grammar, helping sort whether a given verb is a ru- or non-ru verb, etc.
Anki is a lovely piece of FOSS, but its best to create your own deck(s). The process of making them, allows you to learn the content, and you're immediately familiar with the content as well. Pretty much like reading a book for studies the first time.
I haven't read the book but looked through it (hastily though). It was pretty the same - like a slide version of the course.
You shouldn't expect some direct instructions about "how to do/achieve X" in this course/book, I would say. It's more like Brain 101 - A layman's guide on how to use it efficiently. I say "layman", because as you go through the course you realize how little you know about your own brain. It teaches you how to treat the brain, basically - it was the case for me at least (e.g. the real need for sleep, for one). It's not a some kind of deceptive self-help book (course), after all.
Besides, Barbara Oakley is not the only instructor of the course. Terrence Sejnowski[0] is also involved, who is an important figure in his field - Computational Neuroscience. He appears in some videos.
Last but not least, maybe following the video lectures would be more fun for you too. Barbara Oakley, such a lively and nice lady. I wrote her a "thank you" e-mail stating my appreciation for the course and not surprisingly, she replied kindly. I'd like to meet and have a conversation with her some day - but I'm thousands of kilometers (0.621 miles:) away.
I've done the course. What you are saying, regarding the techniques being "stuff you pick up in middle school" is patently false. If you don't like the style of course, just say so.
I would say that your approach to the book, and possibly your own learning, is misinformed. They talk about it on the course - the Einstellung effect: entrenched pathways inhibiting your way to new approaches. The techniques are practical, and cerebral musingdoesn't give you an insight on efficacy. You literally have to try it. Mini-testing and "daydream" methods for scraping your subconscious? Definitely not taught in middle school - or frankly, anywhere.
They are consistent, not very buggy, gamified, and consumable in small or large amounts. Sal Khan is a good communicator and the videos are decent, but it's the exercises that make Khan Academy exceptional.
Khan Academy filled the gaps from my inconsistent public schooling (moved a lot as a kid). Used to think I was just dumb (I might still be lol), but turns out missing some of the early math concepts is extremely destructive to later learning. Fill the gaps and everything else becomes so much easier.
I hear tell Sal Khan is hiding out in the Bay Area somewhere, really wish I'd bump into him in a bar so I can grab his tab or something. Dude's a hero to me.
This is probably the right answer, boring as it is.
I also loved that I would actually see Sal's videos come up as the top results for my calculus questions to illustrate things like matrix multiplication.
It's not often I feel like YouTube hits are as dead on the money for me as they used to be in thsoe days.
The 10-minute limit on videos at the time was to YouTube what the 140 character-limit was to Twitter.
I have been assisting my younger brother in his math deficiencies. Khan Academy has made it so much easier. I'll have him watch several videos on the topic we need to cover, and then work through his assignment together. This lets me focus on the specific areas he didn't understand instead of trying to reteach everything. Really wish I had this when I was younger.
This is probably the right answer, boring as it is.
I also loved that I would actually see Sal's videos come up as the top results for my calculus questions to illustrate things like matrix multiplication.
It's not often I feel like YouTube hits are as dead on the money for me as they used to be in thsoe days.
Taught by Prof. Scott E. Page, teaches about models in several fields and how they're used to aid thinking about complex issues by careful design and usage.
A couple of insights: all models are wrong but some are useful. Having many models about a situation to help your thinking is better than having only one, and much better than none. Complex models are not necessarily better than simple ones.
I love this one. Saw it when it launched and it frequently helps me see through some situations. Some models explains why, despite best intentions, things go awry sometimes. Sometimes things are terrible not because people are terrible, but because everything interact in ways that are difficult to understand and predict.
Absolutely, this was one of the better courses I've taken. My only wish would be to have the course expand and include models from says physics or chemistry, just so that students could get a feel for how both quantitative and qualitative models can both be useful.
I'm in the middle of auditing the Scala track on Courersa.
The first course was great. I agree that Odersky is a very good lecturer, organized and easy to follow. I'd recommend it to anyone interested in Scala.
The second course was OK but not quite as good, it felt a little less systematic. It was mostly Odersky, but for part of the final week the course switches tracks to a different lecturer who clearly was preparing slides for a different lecture series, and I thought both the lectures weren't as clear and the stitch-in of the different material wasn't handled smoothly.
I've just started the third and while it's not Odersky, the lecturers have been good so far.
Actually, there are three parts. The course uses Standard ML, Racket, and Ruby as vehicles for teaching the concepts. The intent is to make you a more effective programmer in any language.
> It changed the way I learn any new programming language.
I can say the same and I can offer my reasons: until this course I saw every language like a little island; after this course I understood that programs are just a collection of features: various typing systems, static/dynamic scoping, lazy/eager evaluation, etc. It's a ton easier to learn a new language by identifying these features than by looking at a language as a big blob. This also made me realize that languages are not little disjoint island - they're overlapping a lot instead.
The course was the way I got into racket and other lisps and this allowed me to read SICP. Since then I've been doing all sorts of toy interpreters/transpilers for fun and it allowed me to get an idea of what's happening behind the scenes in real languages. For example, I used to think that closures are magical, but after implementing them as part of the course they were a piece of cake afterwards. You will get a profound satisfaction when you implement call/cc yourself and suddenly you understand how try/catch or generators work.
I took the same path and went back to reading SICP. But, this time around is was very easy. I had the same experience about implementing closures and the embedded language.
Interesting. Did you feel like you needed a strong understanding of compilers or automata to really grok what was going on (I think automata relate to programming languages, but could be mistaken)?
None at all. Automata are used to turn a program from its textual form into some manageable data structure that something else will consume (actual interpreter/optimizer/compiler). At some point in the course (in the racket part) you will be asked to implement an interpreter for MUPL (made-up programming language), but the programs are directly written as a data structure - so no need to parse; in racket both data and code look exactly the same - it'll be a breeze.
I think the only requirements for this course is some plain procedural language (C/Pascal).
I already see some good responses to your question.
As for me, before this course, learning a language was a mechanical process. I learn the syntax, learn some idioms and go with it. But, after this course, as the other commenter put it, I started learning every language as a set of features. That opens up a whole new world. For instance, when learning a new language, you seek out the features your are interested in and then figure out how that language lets you use it. For example, does a language support abstract data types, what paradigms of programming does it support, is it imperative or functional, lazy or strict, is the language supposed to be used as a bunch of statements or expressions, can common idioms be implemented as simple language functions or do I need the language to support it internally etc, does it support lambdas, does it do lexical or dynamic binding etc. The course also takes you through ML, Racket and Ruby and gradually exposes you through this concepts and in parallel explains what the trade-offs are as you give up once paradigm for another.
So, after the course, next time if you open up a beginners guide to any language, you will be seeking our answers to high level questions. The syntax to use will be learned automatically as you use those 'concepts'
Dan Grossman is a an excellent teacher. His passion for programming languages can be seen in his teachings. The homeworks are very relevant and helps you solidify the concepts. I am thankful to him for offering this course.
It dispels all the magic around programming, by helping you build a knowledge of computer programming agnostic to any programming language. Dan Grossman is a superb teacher and the way he ties concepts together is awesome. I'll be forever glad for this MOOC.
Fantastic course, more focused on theory than programming, but full of deeply fascinating commentary on what is knowledge, intelligence, learning, etc. and what does it mean for a program to demonstrate it (ie. what is AI anyway?).
My daughter was about 18 mo. old at the time I took the class, it was an outrageously awesome added bonus to watch a little human learn all the things I was trying to get a computer to learn at the same time.
I took the same course as part of the OMS CS[0] program. I wasn't terribly a fan of the lectures, but the most fascinating part for me was the course project: building an AI agent that solves Raven's Progressive Matrices[1], basically a visual IQ test. Really intriguing and challenging stuff... easy to get "easy" problems right, but incredibly hard for any of the harder[2] ones. I do wish I didn't have to mess with any computer vision, and instead spent more time integrating more concepts in KBAI.
It's just fantastic. He explains what money really is from the perspective of treating everyone as a bank. Also, lots of good history here including the history of central banking, the gold standard, and war finance.
Anyone who wants to understand money should take this course. It would be nice if more cryptocurrency enthusiasts learned this kind of monetary economics.
1. Quantum Mechanics and Quantum Computation (on edX, from UC Berkeley: https://www.edx.org/course/quantum-mechanics-quantum-computa...), taught by Umesh Vazirani. Intro to quantum computing that made clear key ideas in quantum mechanics, almost in passing. The first of over 70 MOOCs I completed, not available at the moment.
2. Astrophysics (on edX from Australian National University, 4-part series: https://www.edx.org/xseries/astrophysics) taught by Brian Schmidt and Paul Francis. Delightful. Plenty of math but mostly at undergrad level. A grand tour of current topics.
3. First Nights - Handel's Messiah and Baroque Oratorio (on edX from Harvard: https://www.edx.org/course/first-nights-messiah-harvardx-mus...) taught by Thomas Forrest Kelly. Historical perspective and structure of the music. I was hooked from the first lecture. One of a series of 5 outstanding courses in the "First Nights" series, this is my favorite.
Another oddball choice for HN, but the Coursera course Think Again: How to Reason and Argue, by Duke University's Ram Neta and Walter Sinnott-Armstrong [1] is exceptional.
The subject matter covers a staggering breadth of topics, which can be characterised as either (a) fundamentals of philosophical reasoning, or (b) stuff that amateur internet-debaters think they understand but actually don't.
Other great courses: Learning to Learn, Irrational Psychology by Dan Ariely, and Algorithms by Sedgewick
Can someone recommend a good way to work with other students on MOOCs? I've taken many courses, but they aren't much better than just reading the textbook and working on a personal project, although the curation of content is valuable.
The relationship aspect is sorely missing from online courses. If there was an easy way to have a classroom setting with highly motivated peers each following the MOOC with a collaborative environment, then I would definitely want to sign up. You say that's what college is for? Well I've already graduated, signing up for random college classes is extremely expensive and the peer group is highly variable.
The best way I found was to sign up with a group of co-located friends and form a study group. If you don't know anyone who wants to take your course, maybe you could try joining a relevant Meetup group and asking people there?
I found the Isbell+Littman combo to work so well that I also took the ML course. I know some people complain about their humor but it was perfect for me. I could listen to those two explain just about anything. I still LOL when I think about Littman saying to Isbell something like "are you trying to teach us something by making this lecture infinitely long?" Who knew RL could be funny?
Second, this! I was a big fan of Isbell+Littman. There was a brief conversation on Twitter about a third class[0]. Really hoping it happens!
This was also probably my favorite OMSCS class. The projects were particularly enjoyable... especially the OpenAI Gym lunar lander[1]. Kinda bummed that OpenAI chose to shut down the online submission platform.
I can also attest to CV being a great OMSCS class. To me they are by far the best lectures in the program in terms of breadth and depth. They're the most similar to in-class instruction of a university unlike every other class in the program.
As for Isbell+Littman... while their lectures may be more jovial, I wouldn't say they were as effective in learning. I hated the videos tbh. For ML, I found my learning consisted of watching other available videos on the web. Including institutions like CMU, UW, Stanford, and YouTube.
I'm currently taking Intro to CV, and can attest it is indeed quite superb - the professor has a fantastic way of explaining theory, and goes over a really large number of topics. His antics with the videographer are also quite hilarious
These courses are for beginners, but I started with what I learned from a few courses in Coursera and turned it into a career as a software engineer. https://www.coursera.org/learn/learn-to-program and https://www.coursera.org/learn/program-code from Jennifer Campbell and Paul Gries from the University of Toronto laid a great foundation to build on. I think I took them the first time they offered it and I still don't understand how they completely nailed a new medium like that first try. It was very accessible, but with enough detail to make sense and the videos were so clear and concise.
The Python one from Rice University, is a fun, awesome course, where you build games to learn. https://www.coursera.org/learn/interactive-python-1
I extracted everything I could from those courses, which served as a basic comp sci foundation, saw that I was pretty good at it, took a few more not-as-important courses, then applied to a challenging coding bootcamp. I passed the coding tests, got in, worked and learned the hardest I have ever done so before for a few months, and continued studying on my own for a couple months. Then I applied for a job that required a practical coding test, knew someone at the company so they would at least give me a chance, and crushed the coding challenge. I was almost optimally prepared for the job and hit the ground running, while having no official credentials. It's been great since then. The only drawback is that I don't have the broad depth of knowledge/experience that I imagine can come from a CS degree. So I am planning on getting a masters.
CS50 on EdX was a great intro course helping me to get into programming.
Agile Development Using Ruby on Rails (in two parts) on EdX was also great, primarily because they encouraged students to set up pair programming sessions over Google Hangouts. It's amazing how many ways there are to solve a problem, and live discussions in small groups over Hangouts were an outstanding resource to learn.
I am currently enjoying courses from the Applied Data Science with Python specialization on Coursera. I love how they are using Jupyter notebooks for assignments; it makes the problems feel realistic and at the same time very accessible.
This might not be the answer you're looking for, but if you ever want to learn to play the guitar, Justin Sandercoe will take you from novice to expert for free at justinguitar.com. The way he teaches and structures his lessons will probably appeal to a lot of programmers. Also one of the nicest people in the world.
Dan Ariely's behavior economics mooc (from Duke, through Coursera) was more of a graduate level calibre in terms of required/recommended readings and the videos were of high quality.
There was a gamification mooc taught by Kevin Webach (Wharton) that was excellent, too.
Chuck Eesley's first tech-entrepreneur mooc was ground breaking (it led to the spinoff of NovoEd).
The last mooc I actually completed was one for contract law, offered by harvardx. It gives a nice, high-level overview of the subject-- good enough for my needs/interests.
I’ll second Ethical Hacking. His pen testing material is a benefit to any web developer serious about building secure applications. In addition Zaib does a great job of regularly updating the materials and is very responsive to students questions.
This is the only MOOC that I have gone through multiple times.
Strang's MIT OCW Linear Algebra is pretty good. Probably also needs the textbook.
John Tsitsiklis' MITx edx Probability intro course is probably the best course I've taken anywhere and better than anything I did in person at university. I didn't buy the text for this one though I probably should.
Came here to suggest Robert Sapolsky's class as well.
I would also add Michael Sandel's Justice: What's the right thing to do? https://www.youtube.com/watch?v=kBdfcR-8hEY&list=PL15D875D84... great course on moral reasoning, covers different theories of justice based on ideas from Aristotle, Kant, John Stuart Mill, John Rawls and many more, extremely well presented too.
Robert Sedgewick's Algorithms has been one of the best for me, not only as a general refresher on algorithms, but also as a way of better understanding complexity notations.
I enjoyed the lectures quite a bit, but ran into a lot of trouble with the problem sets. I'm wondering if anyone else had a similar experience, or if I should give it another chance and try some different approach?
The problem I had was that he gave you a mostly finished program which utilizes the percolation algorithm, but then asks you to fill in some data structures and functions to make it work, and finally a test suite should let you know if you've completed that successfully. The issue I had was that there was basically no feedback, or incremental progress that you could make towards a solution. You either understand the full requirements and are able to implement them, or your tests fail and you have to scratch your head some more wondering if you misunderstood the problem or what.
I loved the approach that Tim Roughgarden's stanford algorithms class took on Coursera, where you're actually implementing the full algorithm and are given some data sets to test them on. You could even write it in whatever language you choose.
I really wanted to do professor Sedgewick's course but I felt like I couldn't do the assignment even if I understood the algorithm perfectly. Would love some advice if anyone has any suggestions, or even if someone can confirm that I'm not crazy for having a bad time with it.
I did not run into any trouble with Sedgewick's course. His coding assignments are the most elegant and comprehensive I have seen which leave virtually no room for ambiguity. But they are challenging indeed.
> "he gave you a mostly finished program..."
What? He gives you an API with public methods and you have to do the implementation. How is this a mostly finished program?
> "The issue I had was that there was basically no feedback"
The tests are your feedback. When a test fails you need to figure out why the test is failing and what's wrong with your code or if you understood the requirements incorrectly.
I absolutely enjoyed his courses and finished both of them with all the assignments. His assignments are not something you can knock out in an hour. It usually took me at least 3-4 hours to complete any assignment sometimes even more than that.
I also did Roughgarden's course and loved it. He is an awesome teacher. Both Sedgewick's and Roughgarden's courses are very good but they have different approaches. I found Roughgarden's coding assignment a lot easier than Sedgewick's.
Make use of the course forum. If something is not clear ask questions on the forum. Though I found that Sedgewick's requirements specification are very comprehensive and unambiguous. In fact while doing the course I wished software requirements on the job were anywhere close to that comprehensive in real life.
The best way to handle test failure is read the output in detail and see why. If it’s performance (not fast enough) then I usually found that I’d missed a point in the lectures that greatly sped things up. None of the solutions require careful hand optimization, they are well designed to require the right algorithm and data representation. Another problem you may run into is correctness. Some of the tests have tricky edge cases and you can try to see from the test output what that case is and simulate it yourself. You’re not crazy though, some of the exercises are hard and I asked for help in the forums when I got stuck .
I had a similar problem. The problem sets often left me very confused, and were more focused on using the algorithm in unique ways (which is valid but not necessarily my priority) than understanding how they worked.
Really liked that Tim's course let you build an intuitive understanding of algorithms, so you can build them just by thinking about the problem, instead of getting bogged down in optimization details.
Not your usual answer for HN, but the best online courses I've ever taken are Chris Orwig's photography stuff on Lynda.com. Most local libraries have a free subscription with Lynda, and the way he teaches photography/Photoshop/etc was so useful to learn during college. It's not math or machine learning, but the guy is an absolute master at his craft -- and offers some of the clearest explanations on his line of thinking when working on projects.
The "Bitcoin and Cryptocurrency Technologies" on Coursera helped me gain an understanding cryptocurrencies. Until I took that course I knew very little about the subject.
It's possibly a little dated now, but it's a good primer.
Not a cryptocurrency course per se, but Dan Boneh's course on Cryptography[1] is an excellent introduction to most of the building blocks of cryptosystems, including the technology underlying most cryptocurrencies.
In terms of level, it is more than a little technical (programming exercises in both cryptography and cryptanalysis await you!), while still remaining far from rigorous (compared to, say, a graduate-level cryptography text).
CS50x (Introduction to Programming) [1]: Very well structured. Excellent and very Enthusiastic Teacher & staffs. It was the most fun MOOC I took
Learning How to learn [2]: Life changing. I wish I did it sooner.
ops-class (Operating Systems) [3]: This is by far the toughest MOOC I've taken. The Assignments are really tough. Although not impossible. Just the right amount of tough, I guess. I'm currently in the last few weeks and I've really enjoyed it every bit so far.
Interesting (Not Yet Completed):
Introduction to Quantum Physics (2013) [4]: My god, I just love the teacher's enthusiasm. After few lectures, I realised I need to first brush up on classical physics before moving further (which obviously was the requirement that I ignored).
Fast.ai's (fast.ai) deep learning and machine learning courses. No ads, good notes/forum, and very approachable material for anyone that knows basic coding.
I think it totally comes down to your learning style. If you learn best by tinkering with a running system and seeing how your changes affect it and piecing together its foundations that way (like I do), fast.ai is for you. Deeplearning.ai I think appeals more to people who do better with understanding the theoretical foundations before trying to implement something.
Nand2Tetris was very good. I think Coursera has it listed as "Build a Modern Computer from First Principles: From Nand to Tetris." The course does an incredibly good job of walking you through building a CPU starting with NAND chips.
I took the OCaml MOOC to learn OCaml programming. It had many portioned exercises, The video content was very high quality. The online code editor was pretty amazing as well, as it autoformatted the code as I typed it and even compiled and executed in the browser. Some of the problems required one to think outside the box.
Amazing course, though it uses Mozart a little known programming language, drives home the functional paradigm in a lucid manner. I am surprised that Peter Van Roy's book
(instructor of the course) Concepts, Techniques, and Models of Computer Programming is not as well known as SICP.
The Theoretical Minimum lecture series on theoretical physics by Leonard Susskind. Covers the basics in a very approachable way. I wish this had been available when I studied physics.
Introduction to Biology - The Secret of Life by Eric S. Lander (available on edX) was entertaining and educational at the same time. Not many MOOCs were able to keep me engaged to the very end and make me proud and happy when I've finished them. If you are interested in the cell biology and are looking for a way to start on the subject that one is highly recommended.
I've also gone over those lectures a couple of times. I'm not even sure why I started watching them, since I knew absolutely nothing about linear dynamical systems before hand, but it really changed my life! It taught me techniques that I now use all the time, and I think are very neglected within my field (data analysis/forecasting).
If your not familiar with it, it's an extremely versatile framework for modeling and analysis of all kinds of systems. It will give you new insights into linear algebra, time series analysis, stochastic models, Fourier analysis, Laplace transforms, and many other areas.
He's a brilliant (and enthusiastic) teacher, and he has lots of resources on line, including a text-book length exercise-set which I've printed out and had bound because it is so awesome.
Over the past few years, I've watched a few courses on Udacity, Coursera and EdX. I prefer taking ad-hoc courses to fill knowledge gaps (statistics, AI, programming, math, etc.), so I can't give a full review of the complete Nanodegrees, Certificates, XSeries, etc. I usually watch the lessons as needed without completing the entire course; mixing and matching MOOC courses with video learning sites (e.g. Datacamp, Youtube channels, Khan Academy, Egghead, etc.)
If I had to pick a MOOC platform, I prefer Udacity's more hands-on approach, but enjoy courses on EdX and Coursera. The quality of all three MOOC platforms is excellent. It's an amazing time for autodidacts!
If you're starting from scratch, without any background knowledge, the certificate programs with access to mentors are a great place to start. The curriculum is designed by industry professionals and/or experienced professors. This saves you time, keeps you focused and offers a place to get help when needed.
I found the lectures entertaining and the exercises of a much lower quality. Not enough of them, shallow and ambiguously worded.
I got something like 90% on the edx MITx probability course and was barely getting 50% for the above mentioned Stanford stat learning course for the 5 weeks of it I completed. I mention the MIT course, (which I highly recommend fwiw) only to support my view that I don't think my experience is aptitude or workload related. But as ever YMMV.
Kind of a random one but Coursera's Audio Signal Processing for Music Applications was a ton of fun. I had basically no exposure to either the signal processing or the music side of this course and still learned a ton. Inspired me to mess with software synthesizers as well as go back to linear algebra; opened up a whole bunch of avenues for further study.
I like the dialogue between Hastie and Tibshirani in their statistical learning course from Stanford [1]. I found the accompanying ISL book and c-cran depositories helpful for when I wanted to go deeper beyond the lecture.
Intro to finance - Gautam Kaul
I am not sure if they still offer this course for free. I took it in 2011 and I really like it’s homework assignments. Gautam is also hilarious in his teaching style.
To this day the name of the professor brings a smile to my face. If I remember correctly, I didn't even plan to take this course (had no interest in finance), but after watching the Intro video I was hooked.
I have forgotten about it until this comment. Prof Gautam Kaul's MOOC was the first course I took on any MOOC. I did not finish it, mainly because it became very mathematical towards the end and I couldn't keep up. The course gave me appreciation for many things in finance, including personal finance. It's not exaggeration to say that that MOOC was a trigger to seek pay rise, contribute more to 401K and few adjustments in personal finances.
A good reminder and greatful to MOOCs and this course.
I really enjoyed Discrete Optimization, Pascal Van Hentenryck, Coursera. [1] I did it in 2013 and it looks like it's changed a little: vehicle routing seems a good, practical topic right now. Optimizing systems is one of my favorite pleasures, so this course was great for me.
A Brief History of Humankind by Yuval Noah Harari on Coursera.
There is also a book (that I have not read) called "Sapiens: A Brief History of Humankind" which I think was quite popular. It was not quite was I was expecting yet it was very interesting and enlightening.
Also, it's been mentioned, but Databases, by Jennifer Widom. Stanford.
The Hardware/Software Interface from the University of Washington (previously offered on Coursera). As a non-CS major, it gave clarity to a lot of the magic that happens when you write code. Fabulous course.
https://courses.cs.washington.edu/courses/cse351/
I took the first incarnation of this and it was consistently interesting, entertaining, and useful. A good romp through cognitive biases, decision-making to counter them, the scientific method, skepticism, memory and learning, and more. I've started and dropped a lot of MOOCs. This one stands out because I was consistently eager for the next installment to drop.
I really liked Geoff Hinton's Neural Networks for Machine Learning (https://www.coursera.org/learn/neural-networks). It goes into a lot of depth (much more so than Andrew Ng's Machine Learning course) and is fairly challenging.
Most fun and learnt a lot in Introduction to Mathematical Thinking taught by Keith Devlin. I did this course from Coursera in 2012. The most fun part was the forum where students collaborated to discuss and gain better understanding of the problems.
Excellent introduction to the algorithms that underlie control systems for robots. For the assignments, you program Matlab simulators of robots. It is comprehensive and not dumbed down: plenty of calculus involved! I loved it.
Udacity's Self-driving Car Nanodegree by a wide margin.
From the rest, MIT's Underactuated Robotics (Boston Dynamics stuff) was pretty rad, Udacity's Deep Learning Foundations Nanodegree was very useful, Ng's Machine Learning was made super easy. The School of AI's DApps/Blockchain course so far looks pretty good as well.
Definitely agree with this one. It's called Algorithm Specialization on Coursera. I'm now on course 3 and it's definitely helped me a lot in thinking about how reason about algorithms.
One of the best algorithms class I have taken. I liked his way of introducing new concepts and intuition behind them. He really enjoys teaching algorithms.
I've taken "From NAND to Tetris" by Noam Nisan and Shimon Schocken while at high school. Very nice explanation of the whole stack.
As the name suggests, they teach the necessary to build your own computer, assembler, language and finally a simple game.
I would say it goes to an "appropriate" level of detail. You certainly won't become an electrical engineer and game developer with it, but it gives great insight on all layers and how computers actually work, and explains concepts such as pipelining.
This is going to be one of those threads that I'll upvote and bookmark and then not revisit till years later.
Any idea on how to start setting aside time to take a MOOC?
For those of you taking a MOOC, how do you structure your week? It's been years since I've been in college.
It all depends on your work/life schedule, but for me, I have been successful at meeting my learning goals when I do two things:
- Set aside a discrete amount of time for coursework, and stick to it as much as possible
- Do SOMETHING in the course at least once per week, even if it's just watching one video
For the last course (or Udacity Nanodegree in my case) that I completed, I set up this schedule to fit my work/life (I have an infant):
- Watch course videos/do in-class exercises for 2 hrs on 1-2 days after work or during lunch break each week. My goal was to complete all the course videos that went with a project, so that I would be able to do 1 project per weekend. For longer/more complex topics, I would have to stretch this to one project per 2 weeks.
- Complete 1 project every weekend while my baby napped (total 3hrs per weekend day). I usually was able to complete the project during this allotted time, but sometimes had to work at night after putting baby down.
With the above schedule, I was able to complete my program within 3 months, which was slightly ahead of the program's recommended schedule.
You may need to adjust the schedule as you go (life happens) but the main thing is to KEEP GOING, and do your best to visit the classroom and do something - anything - at least once per week.
I currently have the same issue as my priorities are currently different. Back in 2011, I took all three MOOCs offered (pre-Coursera and pre-Udacity), completing all assignments. Then in 2013, when I had more free time available, I took seven more courses.
It was mostly by working till late at night.
It helped to start on new lectures and assignments early in the week given unpredictability of time slots available for studying. Once in a while, I was late in submitting assignments, losing a few points but managing to get A grades still.
Watching the videos at double speed was a boon. I could not have completed the courses without that. Only when I was unable to follow would I rewind and watch the segments at 1x or 1.25x speeds. The technology for speeding up sound along with the video had just come, I felt so lucky for this. Only two courses where I was not able to speed through were those which were completely outside of my domain (Economics and Human Physiology).
I never went through the optional book recommendations, if any. When the subject matter was not explained well enough in the lectures, forums typically supplied the answers within 24 hours of the lecture.
In one of the courses (Compilers), I stopped doing the assignments in the middle as they were requiring a lot of time while not adding a matching value.
It's really tough for me to set aside time for a MOOC, even if if it's absolutely critical-path subject material. So, the one or two I actually spend time with each year teaches something that is of a true investment.
If you are already time-strapped, don't stress yourself over things you don't have the time for, but make time if it will benefit you.
Colt Steele's the Web Developer Boot Camp was the first online course I took. I was committed to a career change/learning how to program/do web development and his course was the structure I needed at the time. It helped me land my first coding gig too. Thanks Colt.
But now I realize how much I don't know :) and why the CS kids I work with have a leg up. I've tried making my way through teachyourselfcs.com, mostly just dipping in here and there. But I've also learned that staring at a glowing rectangle 8+ hours a day doesn't bring me as much joy as does collaboration/empathy/creativity, and that I'm pretty good at design/product stuff (not saying programming can't also elicit said feelings).
Life is one big learning journey, and I'm so grateful that one of the by-products of the internet has been the democratization of learning. For $10 dollars and some work ethic you can learn enough to land a completely new job. The paradigm of 4 year college is waning, and that's a beautiful thing.
Power and respect to you for doing what you want. I strongly disagree that a $10 course gives a person the same learning as a 4 year university degree, I have worked with people that have been to university and people that “got” into the job and there is a large difference. Of course that isn’t always 100% true, there are exceptional people.
I’m sure this will be down modded
Introduction to Mathematical Thinking (https://www.coursera.org/learn/mathematical-thinking). Aims to teach you what it is like to think like a mathematician. Covers the elements of topics that you probably encounter in the first semester of an undergraduate maths degree: logic, induction, proof construction, real analysis, etc.
Machine Learning (https://www.coursera.org/learn/machine-learning). I'm still working through this course but am finding it extremely interesting. I find that having to implement things in matlab/octave gives you a deeper understanding than using a framework like tensorflow or keras.
Both of the above courses have good instructors, which I think is the main factor that makes a good mooc.
I've been wanting to learn how to sketch. Has anyone taken on of the drawing courses and successfully brought their skill level up from nothing to being able to do recognizable drawings?
Some youtuber gave a code for 3 months free of Skillshare, which gave me the impression of being a Coursera for all things design. I already knew how to draw, so I can't say how it is for a newbie, but I did pick a couple new tricks (namely, portraits in Photoshop and watercolor houses).
David Silver (now of DeepMind, leading their reinforcement learning group which has had so many big high profile successes) has video lectures for his introduction to reinforcement learning. It's very thorough and uses a good, free textbook, and the programming projects are interesting but also reasonable in scope.
The first part shows how to design an unoptimized and simplistic, but complete and working 16-bit CPU and RAM from logic gates.
The second part builds a whole software stack on top of it using a virtual stack-based VM:
- CPU assembler;
- a (AOT) compiler from the VM opcodes
into the CPU assembly;
- a compiler from the high-level language
called Jack (an educational mix of Java/C
with many complex parts removed) into the
VM opcodes;
- a standard library for the Jack language
(Screen/Keyboard/Output/Math/String/Array/
Sys/Memory classes), including writing your own
memory allocator and drawing lines/circles
and bitmapping glyphs into video memory
for text rendering;
- your own project (usually a simple game and
sometimes marvels like [0]) written in Jack
on top of all of that;
The courses are definitely very challenging and some previous exposure to the topics is desired.
I'm sure part 2 is great as well, I've only had time to do the first part so only wanted to speak to that. The way it jumps up and down the hardware stack is a very good tool from a pedagogy standpoint - doing assembly language before the CPU really informs why we want the CPU to be set up in the way it is.
Seconded, with part 2. I didn’t major in compsci, so I had never learned how computers work in any deep sense, and this was really eye opening. It takes you through how to build a cpu and then how a succession of binary instructions produces interesting behavior, and then how you can layer abstractions on top, like assembly language and stack operations, and then how to compile code down to those binary instructions and what has to happen at the OS level for this code to run.
It’s also opened my eyes to how much more I still have to learn!
for lots of people here it'll revisit some material you learnt at school but it does go further and the materials are fantastic and the exam at the end is no pushover either.
the MIT Introduction to Computer Science and Programming Using Python on edx is beginner-level, and I took it a few years ago, so it might not be best for the people who read HN---but it's really good. Best introductory-level MOOC in anything I've ever seen.
I'm surprised no-one had mentioned YC's Startup School! We did the Founder's Track last year and it's by far the most useful MOOC for my startup and I. We had an awesome YC alum as an advisor and a weekly group office hours chair.
It is a great course for non management majors to get a sense about how operations work. In fact, it is meant for non-management students because the course is originally taught at an engineering institute.
The instructor is a great figure in Operations Research. He is exceptionally knowledgeable and more importantly, clear.
Programming is for everybody on Coursera. Taught with Python, extremely approachable for non programmers. Teaches you fun stuff including how to use sqlite and how to scrape websites, use JSON APIs, and more!
I found Udacity CS344: Intro to Parallel Programming (CUDA) a great class, not only from a practical standpoint of learning CUDA but also had some decent explanations/whiteboarding behind the algorithms
Really outstanding class! Prof Agarwal was an excellent lecturer, the course material was well prepared, and lots of tutoring material was made available.
(Folks have already mentioned Odersky and Grossman for grokking functional programming)
FutureLearn has an introductory Dutch course. I've only learned languages from the Romance family previously, so it was a worthwhile experience. (Dutch-Australian in-laws) It's a taster course requiring further study but well worth satisfying your curiosity.
Dutch (and Frisian) may provide a stepping stone to understanding Old English - there are recognisably 'Germanic' traits.
Best - in no particular order: Introduction to AI (Stanford), the one who started it all, Coursera Data Analysis and Introduction to Operations Management by University of Pennsylvania.
You can find more details about all of these in the page I linked above.
Not a full MOOC, rather a video lecture series, and one I cannot recommend enough is ‘Human behavioural biology’ with Robert Sapolski. Mind blown. Have listened to some multiple times. I found it to be a fascinating tour of so many facets of biology.
Pretty useful and well taught: React JS parts I and II in Codecademy, JavaScript promises in Udacity.
Just pretty fun: Intro to Machine Learning in Udacity
As a general comment, I would like to say that MOOCs tend to be superficial and that the best way to learn a new technology or paradigm is just to read the docs and try hacking on a project. However, MOOCs can be a good format to simply get a broad perspective on some topic though.
I've done a few from coursera and the best MOOC's I have taken are:
Machine Learning = really good overview of ML, well explained. I did this first but struggled with some of the maths, so took maths refreshers afterwards
Calculus 1 - I have never had a maths class where the Professors made the content so interesting and with such enthusiasm.
Human-Computer Interaction - worth doing if you are building websites / apps
The best teaching I've seen in a MOOC is in Introduction to Financial Accounting / More Introduction to Financial Accounting by Brian J Bushee on Coursera. (This used to be one course back when I took it.)
The subject matter is probably not that interesting to most hackers but it is a great example of making the MOOC-format work.
Andrew Ng's deep learning course. For me it struck the perfect balance between being fast and 'easy' enough to not take up too much of my time while still being deep enough that I finally understood the basic math behind deep learning.
I've recently discovered that videos don't cut it for me. I fall asleep or get distracted doing side research of what is being discussed.
The only one I've finished is edX's CS50. As an electrical power engineer, I used to code in matlab as a hobby: Optimization problems, Power flows, and stuff.
This mooc gently took me by the hand and gave me what is basic to change my career. I quit my job as an EPE and now work as a software engineer, and now I can't stop learning. The course is real fun and challenging at the same time.
Another one that is interesting is mind and machines in edx, kinda thoughtful and different and yet interesting approach to artificial intelligence.
Not sure if this counts but recently I started the “elixir for programmers” course and I’m loving it. It skips over the low level stuff and starts from “I know how to build apps in XYZ other tool, how can I get up to speed on idiomatic Elixir” which is exactly the kind of thing I was looking for.
You follow along building the same app as the instructor. Lots of hands on coding and experimentation between clips. I’m not an expert but my confidence level with elixir is very high now.
Machine Learning by Andrew Ng on Coursera is the best MOOC I've taken so far. It has great explanations on complex topics, fun activities, and a really well put together curriculum on machine learning.
Is MOOC a commonly used term? I don't believe I've ever seen it before this post. Based on context, the default Wikipedia redirect [1] for it seems correct, but I'm surprised I never knew that concept had a name (and an acronym at that).
1. Allow a limited number of students to sign up for a run of the class, which is on a specific schedule, and there's high interaction with and feedback from other students and the instructor.
2. Allow unlimited students to sign up, often at any time, but at most there's a forum or mailing list for participants to interact with each other. Many are just a series of videos or articles, maybe with some assignments, but there's no pressure to complete them.
MOOCs try to combine those. Unlimited students can sign up for scheduled classes. While the class is in session, students are assigned to grade each other's homework, so there's both pressure and interaction.
Most MOOC providers let you "audit" a class for free, which is basically a type 2 online course.
I had found it useful also. It has a lot of bugs though. The instructors often faced the heat on the forums for not thinking the problems through. It's hard after all to be teaching a group of some X0,000 students, noting that some then would have intelligence levels well exceeding the instructors (no matter how accomplished they are).
Since no one has said it yet, /r/ludobots is pretty good. It's a University of Vermont course centered around ML for robotics. Specifically, the goal is to train a procedurally generated robot to walk using NNs. I wouldn't say it's the best I've ever taken but it's pretty unique and great fun.
• MITx "Introduction to Solid State Chemistry" [1]. I've never been good at chemistry, but this course managed to make it clear to me.
• MITx "Circuits and Electronics" [2][3][4] (three links because they have split it into three courses since I took it). Most electronics courses have not worked well for me. Some fail by using analogies that don't work for me. The analogies are either to things I don't understand, or to things I understand too well compared to the target audience for the course.
The latter might seem odd--how can understanding the analogous system too well cause a problem? It's because there usually isn't a perfect match between behavior of the analogous system and electronics. The more you know about the analogous system, the more likely you are to know about those places that don't match. If the author expects the students will not know about those parts, they won't mention the limitations from those parts. So you can end up expecting too much of the analogous system to apply.
Other courses have not worked for me by being too deep and detailed. For instance at one time I knew, from a solid state physics intro I took, how a semiconductor diode worked at a quantum mechanical level. I could do the math...but the course gave me no intuition for actually using the diode in a useful circuit.
The "Circuits and Electronics" course struck for me a perfect balance.
• MITx "Computation Structures" [5][6][7]. At the end of this three part course (of which I only took the first two parts), you will know how digital logic circuits work at the transistor level, and you will know how to design combinatorial and sequential logic systems at the gate level, and you will know how to design a 32-bit RISC processor...and you will have done all those designs, using transistor level and gate level simulators.
As I said, I only took the first two parts (didn't have time for the third). In the first two parts we did cover caching and pipelining, but we didn't use them in our processor. I believe that in the third part those and other optimization are added to the processor.
• Caltech "Learning From Data" [8]. The big selling point of this course is that it is almost the same as what Caltech students get when they take it on campus. The only watering down when I took it was the homework was multiple choice so it could be graded automatically.
The most outstanding thing about this course was Professor Abu-Mostafa's participation in the forums. He was very active answering questions. I don't know if he still does that now that the course is running in self-paced mode.
Also did Computation Structures from MITx and I think it was the best of the roughly 20 MOOCs I took. Too bad few people seem to have done it as well.
In the third part of the course, the content moved to the software connecting to the BETA, the processor we built in earlier parts. The last problem set was to build a very simple OS, in assembly, with interrupts, privileged mode, and running up to 3 concurring processes, all in less than 1000 instructions, macros included.
Buddhism and Modern Psychology by Princeton. This course was just mind-blowing for me. It talks a lot about how our evolutionary survival mechanisms prevent us from seeing the world clearly. If anyone has taken similar courses would love to hear.
This is an absolutely amazing course! It's also about how Buddhism actually guessed so many things correctly about how our brains work. The author explains about Buddhist ideas and almost for every of them, there is a scientific experiment, that indicates it could be true.
I will +nth this course. Tying an ancient philosophy with modern science lends both a lot of credibility. Note that religious aspects are not addressed. Practical aspects of buddhism (such as a regular meditation practice, approach to emotions, etc) are discussed. I find it very useful in day to day life.
Nicest: Andrew Ng, Machine Learning, Coursera. Interesting topic, well-planned material, very well avoids going into the mathy details, but still conveys a feeling of understanding of the topic, so accessible to a wide audience. (Martin Odersky, Functional Programming Principles in Scala, Coursera, was almost equally nice, but had some rough edges in the first run.)
Most interesting: Probabilistic Graphical Models, Daphne Koller, Coursera. Very interesting topic. I took the first run of the course and it had lots of rough edges. Needs a lot of work to apply the lectures to the homework. I haven't seen such a demanding course since I took quantum mechanics at university.
Best organized: Jennifer Widom, Databases, Stanford. This is not the flashiest of a topic, but oh boy was it well organized. Runs like a clockwork. Everything in the lectures is relevant, everything from the lectures is applied and tested in the homework, there is lots of homework (but still not enough to make you remember SQL,XPath,XQuery,XSLT for the rest of your life if you don't keep using them), weekly homework has a nice progression from simpler things to medium difficult things, and the web environment is well designed, and gives wonderful feedback and guides you to get your queries correct.