MOOCs doesn't necessarily mean courses on platforms like edX or Coursera. They can include university courses with public materials like videos, notes, assignments, etc.
Nand 2 Tetris: <a href="https://www.nand2tetris.org/" rel="nofollow">https://www.nand2tetris.org/</a><p>In which you, more or less, build a computer from scratch. The course takes you through 12 projects, about 1 week each, where you incrementally build:<p>a CPU<p>a RAM chip<p>a full von Neumann computer<p>an assembly language<p>a virtual machine<p>a high-level language<p>an operating system<p>... using NAND gates. All of this is done on your computer using tools provided by the course. Once you've done these projects you will understand the building blocks of a computer from the RAM and CPU, to assembly up to the compiler that executes your programming language of choice. It's a powerful course that will unlock a whole new perspective on computer programming for you. I believe that bang-for-buck it's probably the best online course for someone who is a self-taught programmer. It's practical, fun and mostly oriented around building things.<p>(from my blog @ <a href="https://mattsegal.dev/nand-to-tetris.html" rel="nofollow">https://mattsegal.dev/nand-to-tetris.html</a>)
I liked the EdX Statistical Learning course by Trevor Hastie and Robert Tibshirani, it's a great introduction to statistical modeling and data science (assuming you already have a solid math and statistics background):
<a href="https://www.edx.org/course/statistical-learning" rel="nofollow">https://www.edx.org/course/statistical-learning</a><p>It is not too math heavy, and the focus is on basic, interpretable approaches and concepts like:<p>- linear and polynomial regression<p>- logistic regression and linear discriminant analysis<p>- cross-validation and the bootstrap<p>- model selection and regularization methods (ridge and lasso)<p>- tree-based methods, random forests and boosting<p>- support-vector machines<p>- neural networks and deep learning<p>- survival models; multiple testing<p>- some unsupervised learning methods like principal components and clustering (k-means and hierarchical).<p>The instructors are really articulate and passionate about teaching well. As a bonus, there are guest speakers about every second week including Jerome Friedman and Geoff Hinton.
I've completed and can recommend all of these if the topics are of interest to you:<p><a href="https://www.coursera.org/learn/basic-modeling" rel="nofollow">https://www.coursera.org/learn/basic-modeling</a><p><a href="https://www.coursera.org/specializations/algorithms" rel="nofollow">https://www.coursera.org/specializations/algorithms</a><p><a href="https://www.coursera.org/learn/discrete-optimization" rel="nofollow">https://www.coursera.org/learn/discrete-optimization</a><p><a href="https://www.coursera.org/learn/programming-languages" rel="nofollow">https://www.coursera.org/learn/programming-languages</a><p>I'm still working my way through this one but it's been good so far:<p><a href="https://www.coursera.org/specializations/data-structures-algorithms" rel="nofollow">https://www.coursera.org/specializations/data-structures-alg...</a>
If you're willing to branch out into stuff that falls into the "not going to get you hired, but enriching personal experiences" bucket, then my number one recommendation will always be 'A Course in Modern Mathematical Physics' by Peter Szekeres. The book compresses so much into ~1000 pages without feeling like you're missing anything as you go.<p>You can get a lot from the David Tong lectures if you want something similar but free, but to me, Szekeres wins out on delivery.
Highly recommend the Stanford course notes on AI. I've found these useful:<p>* CS224n natural language processing<p>* CS330 Meta Learning<p>* CS224U Natural language understanding<p>* CS234 Reinforcement Learning<p>* CS221 Artificial intelligence<p>* CS229 theoretical machine learning<p>The course notes can be found at CS(x).Stanford.edu such as<p>cs229.stanford.edu<p>Of course the main problem isn't that there's not enough good material. The problem is that there's too much! So a course that teaches how to pick the most important courses for oneself is sorely needed
Introduction to Databases by CMU
<a href="https://15445.courses.cs.cmu.edu/fall2022/" rel="nofollow">https://15445.courses.cs.cmu.edu/fall2022/</a><p>It has challenging exercises. And they gave access to their automatic exercise checker.
A great course for learning modern web concepts: <a href="https://fullstackopen.com/en/" rel="nofollow">https://fullstackopen.com/en/</a>
It is free and constantly updated.
The best part is that is has exercises and you learn by doing.
Quite difficult, you NEED to have experience in programming to finish it.
It is not a MOOC, but two books with overlapping authors.<p>1. How to Design Programs: <a href="https://htdp.org/" rel="nofollow">https://htdp.org/</a><p>2. A Data-Centric Introduction to Computing: <a href="https://dcic-world.org/" rel="nofollow">https://dcic-world.org/</a>
Highly recommend these threads:<p>[0]: <a href="https://news.ycombinator.com/item?id=25245125" rel="nofollow">https://news.ycombinator.com/item?id=25245125</a><p>[1]: <a href="https://news.ycombinator.com/item?id=16745042" rel="nofollow">https://news.ycombinator.com/item?id=16745042</a><p>[2]: <a href="https://news.ycombinator.com/item?id=22826722" rel="nofollow">https://news.ycombinator.com/item?id=22826722</a><p>There are some evergreen ones there.<p>You will find some courses that are among the best places to get knowledge in those topics.
I recommend the Pharo MOOC: <a href="https://mooc.pharo.org/" rel="nofollow">https://mooc.pharo.org/</a><p>It's a nice course on a current language in the Smalltalk lineage, that even more than 40 years after its introduction still provides mostly unsurpassed programming environments and developer experience.
The Coursera AI course videos were good a few years ago. You could audit to see those for free. Don't know if that is still the case. It is probably a good idea to go through all the courses since that reinforces learning. Good introduction to back prop, ReLu, batch norm, attention, GANs, etc...
Graph Neural Networks are an interesting approach to ML on structured data. Two GNN courses I recommend are:<p>Stanford CS224W, <a href="https://web.stanford.edu/class/cs224w/" rel="nofollow">https://web.stanford.edu/class/cs224w/</a>
Zak Jost's Intro To GNNs, <a href="https://www.graphneuralnets.com/" rel="nofollow">https://www.graphneuralnets.com/</a>