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.
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.
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.
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.
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 .
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.
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!
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.
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.
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.
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 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.
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.
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 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.
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.
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.
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.
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.
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.
– 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.
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.
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.
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.
> 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.
> 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.
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.
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.
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?
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.
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:
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.
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.
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.
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/
319 comments
[ 2.7 ms ] story [ 289 ms ] threadThey 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.
https://archive.org/details/mit_ocw
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.
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.
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.
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[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.
[0]https://en.m.wikipedia.org/wiki/Terry_Sejnowski
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.
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:
The courses are definitely very challenging and some previous exposure to the topics is desired.[0] https://github.com/QuesterZen/hackenstein3D
(Just completed parts 1 and 2 last week on Coursera btw, really opened my eyes!)
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.
[1] - 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.
[1] https://www.coursera.org/learn/learning-how-to-learn
(Really anything by 3b1b)
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. https://www.khanacademy.org/math/statistics-probability
[1]: https://lagunita.stanford.edu/courses/HumanitiesSciences/Sta...
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.
[1]https://lagunita.stanford.edu/courses/HumanitiesandScience/S...
https://www.coursera.org/learn/programming-languages
I see that they have split the course into 2 parts.
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.
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.
> 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.
[0]: https://towardsdatascience.com/thoughts-after-taking-the-dee...
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.
– 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.
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.
On the other hand, I still feel that the course is often unnecessarily brutal and could use better explanations.
[0] https://mitpress.mit.edu/books/probabilistic-graphical-model...
[1] https://arxiv.org/abs/1801.04016
Also Bayesian Methods for Hackers: https://news.ycombinator.com/item?id=16482421
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.
This course gave me professor envy and made me up my game. So well done.
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.
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.
https://lagunita.stanford.edu/courses/Engineering/db/2014_1/...
Main page: https://cs.stanford.edu/people/widom/DB-mooc.html
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.
https://www.edx.org/micromasters/bioinformatics
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?
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:
http://blog.davidsingleton.org/nnrccar/
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.
[1] https://www.notion.so/MOOCs-recommended-by-Hacker-News-e1070...
EDIT: the previous link pointed to one of the headers in the page, instead of the page itself.
You can read a couple of reviews here: https://www.coursetalk.com/providers/udacity/courses/interac...