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.
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.
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?
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.
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.
Main page: https://cs.stanford.edu/people/widom/DB-mooc.html
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.
EDIT: the previous link pointed to one of the headers in the page, instead of the page itself.
– 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.
On the other hand, I still feel that the course is often unnecessarily brutal and could use better explanations.
Also Bayesian Methods for Hackers:
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.
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:
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.
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.
This course gave me professor envy and made me up my game. So well done.
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.
Understanding how economies work, 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.
So I'll just say the pre-2017 version I took was clearly created by bad PR-people.
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.
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.
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.
Highly, highly recommend it.
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.
* Discrete Optimization: almost entirely problem-driven, very challenging and entertaining prof; https://www.coursera.org/learn/discrete-optimization
* Crypto I: very deep, thorough and crystal clear explanations; https://www.coursera.org/learn/crypto
* Computer Networks: excellent overall course covering a wide variety of topics; https://www.coursera.org/instructor/~517478, https://www.youtube.com/playlist?list=PLfgkuLYEOvGMWvHRgFAcj...
Compared to many other MOOCs, it provides solid foundations while being easy to follow.
By far and away the best learning course I've taken in my life as well, I wish it had been available before I had completed my formal education.
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.
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
3. Use this resource for japanese grammar and complete exercises: http://www.guidetojapanese.org/learn/grammar
4. Use this to practice listening skills: http://www.nhk.or.jp/radionews/
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.
I own the book and have half-read it twice, it’s very underwhelming. At no point am I thinking “that’s going to change my way of doing X”
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 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.
My two cents.
Most of the "techniques" are stuff you pick up in middle school.
Also I find the teaching style, with those cute cartoons and sounds, extremely patronizing.
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.
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.
And then there is archive team with their Coursera backups as well.
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.
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.
 - https://www.coursera.org/learn/progfun1
I did the course on the first or second run however, not sure if it has been kept up to date or if it is still well run.
Was disappointed with the follow up courses though, the lecturers didn't live up to Odersky.
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.
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.
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.
Additionally, this is the class that gave us "Jill Watson", the robot TA.
- Differential Equations from 2015:
- The original SICP recordings from 1986:
In addition to the other Gilbert Strang ODE courses, this one comes with videos for numerical solutions. From the inventor of Matlab himself.
I see that they have split the course into 2 parts.
I liked that it used ML, and the parallel/isomorphism between functional and object-oriented programming was really well illustrated IMO.
Really good to develop basic intuition before going into more advanced stuff.
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 think the only requirements for this course is some plain procedural language (C/Pascal).
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.
Hope this makes sense.
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.
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.
 - https://www.coursera.org/learn/understanding-arguments
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.
So many great MOOCs, so little time.
(Really anything by 3b1b)
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.
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?
This was also probably my favorite OMSCS class. The projects were particularly enjoyable... especially the OpenAI Gym lunar lander. Kinda bummed that OpenAI chose to shut down the online submission platform.
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.
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.
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.
> "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.
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.
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.
Andrew Ng. Machine Learning (Stanford) (youtube free)
This is the only MOOC that I have gone through multiple times.
> The fast AI course mainly teaches you the art of driving while Andrew’s course primarily teaches you the engineering behind the car.
I'll probably take some of the fast.ai courses at some point, but the deeplearning.ai one was great.
It's possibly a little dated now, but it's a good primer.
I'd love to hear what other cryptocurrency courses others recommend.
As many others mentioned, Andrew Ng's course on Machine Learning on Coursera was also very good.
Latest live stream (with Andreas Antonopoulos) goes into Ethereum and alternative uses of the blockchain:
Edit - Actually, the latest live stream is this one:
Figured I'd leave both, since they cover similar topics
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).
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.
Intro to Descriptive Statistics [https://www.udacity.com/course/intro-to-descriptive-statisti...]
Intro to Inferential Statistics [https://www.udacity.com/course/intro-to-inferential-statisti...]
Khan Academy also has very in-depth coverage of statistics, starting from the basics.
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.
edit: i asked and i shall receive: https://archive.org/details/fun_ocaml_mooc
other favorite: absolutely insightful about Russia
history of the modern world: really good just with headphones:
best was "Social Psychology" by Scott Plous/Wesleyan University.
inexplicably gone now from Coursera and internet afaikt
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.
A good reminder and greatful to MOOCs and this course.
Programming Languages by Dan Grossman of University of Washington: https://www.coursera.org/learn/programming-languages
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.
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.
Robert Sapolsky's Human Behavioral Biology Stanford lectures are well worth watching.
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.
Watching them throw seat cushions as prizes was funny.
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.
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.
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.
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.
Learning How to learn : Life changing. I wish I did it sooner.
ops-class (Operating Systems) : 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) : 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).
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.
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.
This is pretty good material for fundamentals. I used it myself to learn.
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.
- 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.
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.
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.
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.
ML by Andrew Ng is also another great example of a MOOC that could be executed very well.
From non CS related courses I really liked Intro To Finance by Gautam Kaul, also on Coursera.
It’s also opened my eyes to how much more I still have to learn!
You can do parts 1 and 2 at the same time, btw.
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
- a standard library for the Jack language
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 ) written in Jack
on top of all of that;
(Just completed parts 1 and 2 last week on Coursera btw, really opened my eyes!)
Got me into programming and part of an exclusive club of MOOCs I've started AND finished.
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.
Donald Kagan's introduction to ancient greek history on open Yale courses
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.
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.
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.
Elm for Beginners, and the followup course. The first one is free and does the 70% case of the language.
Well organized, good pacing, good content.
You can read a couple of reviews here: https://www.coursetalk.com/providers/udacity/courses/interac...
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.
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.
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.
As someone into OR myself, I'd like to see if it will be formally given again.
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.
This makes me wonder what English speaking courses are being missed..
I did all the Scala ones a few years ago, the most interesting was building a distributed key value store.
There’s a really online interesting course on Milton at Yale. Great lectures but I didn’t try to work through any of the assignments.
Not really a Mooc but I recommend both Duolingo and Memrise for learning language skills on your phone
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.
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
• MITx "Circuits and Electronics"  (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" . 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" . 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.
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.
Agree with others on Windom, Ng and Page.
The subject matter is probably not that interesting to most hackers but it is a great example of making the MOOC-format work.