The course is good, the book is better, in my opinion. Although it covers the same, but I like its presentation much better than the video course.
Nisam/Schocken: "The Elements of Computing Systems"
I have only finished the hardware part, so far, but skimming the rest I can't find Tetris anywhere. Is that really missing, although it's in the title?
(I know that you can program Tetris on the machine you build in the course, but is it an exercise somewhere?
One section asks you to learn Jack (The high-level programming language) by writing a medium-complexity program. The goal of the exercise is not to get proficient in Jack (which is a Java-like-language), but to just learn it well enough to implement the compiler.
I wrote a Tic-Tac-Toe variant - but you could write anything, including Tetris.
On Coursera, if I remember right, the first course gets you to the point where you have a CPU that can run machine language and an assembler. They give you an assembly version of Tetris that will run on what you built.
In the second course you build the programming language that could be used to write Tetris, though I don't think you actually go through it as an exercise.
Seconding this. It's the most fun I've ever had on a technical project (with the possible exception of tptacek's microcorruption.com), and really opened my eyes to all the problems you have to solve to get a working computer.
Note: you can also complete all the course materials just by going to nand2tetris.org.
Models are tools to help us reason clearly about the world. They help us deal with complexity in manageable chunks by focusing on salient parts of a problem, rather than the whole.
From my course notes, a nearly comprehensive summary of how the social sciences use models was presented:
16 uses of modeling outside prediction include from Epstein, Joshua M. (2008). Why Model?. Journal of Artificial Societies and Social Simulation:
1. Explain (very distinct from predict)
2. Guide data collection
3. Illuminate core dynamics
4. Suggest dynamical analogies
5. Discover new questions
6. Promote a scientific habit of mind
7. Bound (bracket) outcomes to plausible ranges
8. Illuminate core uncertainties
9. Offer crisis options in near-real time
10. Demonstrate tradeoffs / suggest efficiencies
11. Challenge the robustness of prevailing theory through perturbations
12. Expose prevailing wisdom as incompatible with available data
13. Train practitioners
14. Discipline the policy dialogue
15. Educate the general public
16. Reveal the apparently simple (complex) to be complex (simple)
Think scientifically/mathematically. It what most people who hang out HN do intuitively, but most of the general public does not. (Like how Dr Fauci talks about COVID-19 vs how Donald Trump does).
For me, this was also the most interesting course. But I don't think you can still access it (I tried a couple of months ago to revisit it).
But Scott Page also has a book out on the topic "The Model Thinker", which covers most of the course.
+1! This is a three-parter and it was such a fun hobby for a few weeks when quarantine was kicking up. I had played with plenty of languages before but didn't realize the gaps in my knowledge. Would recommend.
I took it the second time it was offered. One of the main reasons was it was as an excuse to learn Emacs. Does anyone know if the course still encourages using Emacs?
I quite liked "How to win a data science competition" (https://www.coursera.org/learn/competitive-data-science) where I learned a lot about validation strategies and machine learning on tabular data. The course has its own Kaggle competition.
I also really liked "Discrete optimization" (https://www.coursera.org/learn/discrete-optimization). At the time that I took it it also had a competitive element where you would solve optimization problems and there was a leader board comparing all the students in the current batch. That was when courses still started in batches and were free so the experience would probably no longer be the same, unfortunately.
> I quite liked "How to win a data science competition
As a machine learning researcher I am on the one hand glad that folks are learning more about the topic. On the other hand, this is totally the wrong approach and it will teach you the wrong lessons.
The idea that you can just treat data as a uniform dump of tables and that grinding your way to high numbers is somehow worthwhile is simply terrible. The resulting systems won't work well in the real world and they produce horrific explanations of what is going on. This class teaches you not just the wrong tools, like boosting, it teaches you the wrong mental model.
I really can't think of a worse introduction to ML than this class. Even not knowing anything would actually be better.
Interesting. I definitely would not recommend this course as an only course in machine learning or indeed as an introduction, and I see where you’re coming from with the wrong mental models. I can’t be sure that I do have the right ones but I have taken a number of other courses as well and my sense is they’re ok.
My main takeaway from the course was definitely not that just grinding away for higher numbers is the right thing to do (but it might be a necessary evil in a competition context). The key thing I learned here was much more about paying very close attention that your validation strategy and your testing strategy are compatible because there are many ways you can mess it up, making your models valid in-sample only. Most of the other things I had done before were also more around SVMs and neural networks and getting some experience with decision tree based algorithms was interesting.
I took his 2 algorithm courses on Coursera's original platform. They were stellar. In particular making practical problems that have a calculable answer that you implement yourself in whatever language you choose and check as part of the course. As opposed to having some online interpreter for some specific language.
That was then hosted on Stanford's own Lagunita platform (based on the edX platform I think.)
Stanford then split those 2 courses into 4 on Coursera's new platform - the same material I believe but packaged differently.
Stanford then closed its Lagunita platform and those original 2 courses are now offered on edX.
A similar story with Alex Aiken's excellent Compiler course and Jeffrey Ullman's Automata course too. I'm not even sure if they are still available on Coursera or not.
What level of math would you recommend for the courses?
This is always a difficult question, because it's always "high school level math" which is rarely true. Then again, some algo courses focus highly on math and proofs while others focus more on implementation.
I prefer the Algorithms course by Princeton but I still really like this course. The deep dive into the mathematical proofs and timing of these algorithms is what gives this course an advantage over Princeton’s course.
Programming Languages, Dan Grossman, UW.
https://www.coursera.org/learn/programming-languages
It is a 3 part course and a bit more intensive than other courses on Coursera with challenging assignments. It helped me gain a deeper understanding of statically vs dynamically typed languages. Designing a tiny language in Part B is the best part of the course. Concludes with a nice comparison between OOP and functional languages.
Did this one when it was just one single course. The content is great, but the best thing by fat is the teacher. Dan Grossman is a natural teaching talent, and this course shows how one single teacher can make a difference.
Dr Barbara Oakley’s “Learning How to Learn” [0] is great.
Edit: It gives an important understanding on how our minds function and how we learn, which, I think, forms the basis of effective work. Knowing how to work, and being an effective learner are incredibly important qualities in life.
You can get a sample out of her Google talk on YouTube. Basically the course tells you ideas about how to read/manage time to learn things more efficiently.
And most importantly, why you should study and manage your time in certain ways.
A lot of things in that course feels like it fairly obvious when you hear it, but often you might not have thought in those directions, and often it helps to get those things spelled out.
If I had had that course in my early teens that would have helped me a lot.
I really enjoyed the part about recollecting vs rereading. This changed my perspective on how to read things. I have noticed I read less nonsense and retain more of the important topics. Also tried it with software docs. Although recollecting API names didnt help me make better software decisions but it came in handy while writing code. A bit of fluency helped reduce friction since I could code with less context switches.
Ah yes, that is an important part. I certainly often fell into the trap of looking at the material, feeling it was comfortingly familiar and thus believed that I knew it. And then of course struggled to recall it when I needed it.
Also, it is free as in beer, and since its very fundamental, that is important. It is also useful for high school students as well. I actually had various of these subjects at high school (in my native language and without these experts though).
If you define "work" rather broadly, to include hobbies and the pursuit of personal goals, in addition to laboring for remuneration, then I would argue that knowing how to learn is probably the most important meta-skill one can have.
One thing that stood out for me was that I realised that the basic concept of the course was already familiar to me. Breaking down something new to learn into chunks, then forming a high-level picture of the unknown landscape and then starting to connect those chunks as you go deeper into the details.
I wonder how many people have already in some way used that process to learn something new without realising that it is indeed the most efficient way for the brain to learn a new concept.
I would recommend skipping this one. It contains fairly obvious advice, the information density is low and it isn't delivered very well. I really don't know why it's recommended so often.
It is recommended often because Learning How To Learn is a very fundamental part of your skill set which, sadly, many people either lack or do sub-optimal. Precisely because of that it can contain "obvious" device; because you are already (partly) familiar with it. I find it rather arrogant to say its useless for everyone. Its a fairly quick course, where you can spend more time on aspects if you desire.
This topic about the top Coursera courses or which ones you recommend comes up regularly here on HN.
On top of the mentioned Learning How To Learn I can recommend the following:
Terrorism and Counterterrorism: Comparing Theory and Practice by Edwin Bakker [1]
Securing Digital Democracy by J. Alex Halderman [2]
Cryptography I by Dan Boneh [3]. I didn't finish this one, but its very good...
- You will get good at anything given enough practice, so don't worry about thinking you're bad at X
- As you get good at X, you will start to like it
- Pomodoro
I'm over-simplifying of course, but I felt like the course provided a lot of concepts with very little actionable advice.
It's a very popular course because it "feels good". It is motivating, and has a very positive message. I wouldn't consider it very useful for already highly motivated and self-driven people.
You overlooked the two states of learning: focused and diffuse. Each is important. That was a big eye-opener for me as I used to blame my mind needing to take frequent breaks and thinking about other things on my inability to focus. Then I realized that it's just a natural way to learn.
There was lots of actionable advice. Just as an example: frequent self testing. Incorporating this into my studies more intentionally has helped me learn quicker.
I'm highly motivated and self-driven. This course isn't about motivation. It's about how we learn and how best to take advantage of that.
But I will say that knowing how the brain works and how we learn has motivated me to change my study habits. Knowing that I learn in my sleep motivates me to prime my brain for learning every day to take advantage of that. So I rarely skip a day now. Even ten minutes gets my subconscious primed and working while I sleep. The mental models you get out this course will last a lifetime.
You missed the most important part: Which is to jump between advanced/beginner content to build a better image. i.e.: If you are learning a programming language, you start with easy and keep going, but along the way you jump to very hard/advanced stuff. This technique really boosted my learning and solidified it.
As a non-programmer but a decent mather, I thought it presented the materials in a way that was easy to understand. In my mid-thirties now, I feel like I could have handled this at 18 just fine--but not in a patronizing way. It was just very clear and the professor had a good sense of humor.
I just built my first time-saving Python program and it felt really satisfying. I built a few others that were cool but none actually saved me time. Very satisfying! At the end of the 3 courses (~60 hours) and some additional tinkering (~40 hours), I had the skills and that's pretty cool.
I was disillusioned by Princeton's Algorithms course when I took it. I felt like I was fighting too hard with eccentricities of Java than actually learning about algorithms. In retrospect, I was wrong, because one of the things I realized that it taught me was that implementation details of algorithms are _hugely_ important, and can cause drastic differences in time and memory utilization. I can easily forget the details, but I haven't forgotten the experience of hacking out my stupid mistakes until the implementations fit the requirements.
That was a learning for me too, but I thoroughly enjoyed the psets. I don't mind Java - setting everything up can be annoying but I find it fairly straightforward and its massive standard library comes in handy for a class like this.
"Modern Big Data Analysis with SQL Specialization" by Cloudera is awesome. It discusses Hadoop, Hive, Impala and Big Data and the instructors are great. It is rated 4.8/5.0
Not Coursera but I really enjoyed the "Intro to Complexity" course from the Sante Fe Institute; it's highly recommended on classcentral.
It gives a broad overview of how complex systems emerge from simple phenomenon and shows how cross-disciplinary some of these insights are.
My personal favorite, Statistical Mechanics and Computations.[1]. Excelled introduction to MCMC methods, lots and lots of python programs and filmed against a green screen.
Obligatory, Stanford CS231n: Convolutional Neural Networks for Visual Recognition [2] The assignments are excellent and will let you implement a deephish network from practically scratch, before diving into modern frameworks and applications.
Same. Having finished the course years ago, I remember most vividly the following: never implement your own crypto. Not many details survived the time but it was intellectually rewarding.
The course is apparently being released when the accompanying book is complete. The book is free, and you can see the current version here: https://cryptobook.us/
I'd say yes, provided you complement the better mental model this course will give you with a reputable cookbook list of how to do X in practice (maybe start at https://latacora.micro.blog/2018/04/03/cryptographic-right-a...), and everything you'd like to do falls into some well-established pattern.
But then you probably shouldn't trust my opinion, because I'm not a domain expert (although I have been involved in security design together with people who are domain experts), and whatever understanding I had is probably somewhat rusty by now .
I have no idea how 'Machine Learning' from Ng is not mentioned.
It's fine in teaching you introductory (although it seems to cover more basics than a lot of other courses do, somehow) ML. But more importantly, it's a well designed course. You can see how each piece uses previous pieces and how it solves problems and edge cases not covered earlier.
AFAIK it wasn't. Ng just makes new courses for new methods.
That said, I'm yet to see better coverage of that topics (If someone knows, I'd really like to get them. I forget pieces every now and then, and having more efficient refresh method is always welcome).
I appreciate his attention to pedagogy. Even small things like noticing that students learn better with Matlab/Octave than with R or Python is the kind of observation that takes a combination of knowledge, effort and caring about teaching.
I could be wrong, but I think it has nothing to do with that, and now to do with the course being so old that R and Python weren't the standard ML languages yet.
I still think that for learning the math behind ml Matlab still makes the most sense though. It takes the focus off the programming itself and enforces the matrix concepts. Although python is the undisputed king in that regard so unfortunately it makes more sense to teach that
That's not the entire explanation for Ng's use of Octave though.
At the birth of Coursera in 2012, R and Python were already clearly established in the field of data science. R was the dominant open-source language for data science, with Python very close behind (and already gaining ascendancy among folks who identified with "machine learning" rather than "data science"). I remember Matlab/Octave being more associated with academics/students in EE (signal processing, wireless communications, and the like); if you want clear insight into matrix operations, Octave is great.
I think Ng made a very conscious decision at the time to eschew built-in functions and not get distracted by trendy languages - hence the use of Octave to learn how to implement algorithms at the most basic linear-algebra level.
Even at the time his decision was not well understood nor popular - way back then I remember people asking "Why Octave instead of R or Python?"
I think his choice of Octave was really just to avoid using Matlab. I had taken several other courses around the same time, and they all used Matlab. All of the courses had arranged for a free Matlab license for the time the course was active. You also were given the option of buying the Student version for $99. That didn't last long, I haven't seen any courses offering a free license (or even using Matlab for that matter), and to get the Student license you have to be enrolled at a 4 year institution.
In those classes that did use Matlab, there were quite a few people sticking to Octave, though it wasn't 100% compatable. And when I got to Ng's course, I (and I imagine a whole lot of others) were really happy to see he went 100% with Octave. Had he gone the Matlab route, the old course would be pretty worthless now.
We'll never know what happened behind closed doors, but I think Matlab was sponsoring some courses in order to get new people hooked on Matlab and it just didn't pay off.
That's certainly the goal, but in the courses I took, the Octave users always had Octave specific issues they had to work through, so there were some incompatibilities. This was about 10 years ago, so I imagine Octave has made some progress in that area too.
I've taken 3 MATLAB courses on Coursera this year and they've all included free student access to MATLAB online. Also, a home use license for MATLAB is available for $149.
In his video for the course, he explains that he tried python and R but found students grasped the concepts better with Matlab/Octave. If I recall, it is in the video for the first lecture.
I agree with a sibling comment that it was python and R were well established at the time.
Also makes you think about how comprehension is closely tied to expression even for ostensibly similar languages.
Interesting, I found the course disappointingly shallow. I did do it soon after it came out, maybe it got much better with time. I also have a background / job in statistics, though not ML as such.
While it does talk through the basics of ML, it is really barely a taster. It doesn’t leave you with any skills, other than, if you buy a book and work through it, you will know what a “decision tree” is ahead of time.
With something like ML, the real value is in the deep nitty gritty, building intuition about methods you use, fighting the unfair battle against broken data etc, and all those things were missing to me.
Have you tried the deep learning courses? They steer away from statistics and proofs, but all the math required to build a convoluted network is covered. Lib use is very low level at first; not too far removed from doing it all from scratch it you really wanted to waste the time.
This was the first course I did on Coursera and it is by far the best introductary course for machine learning I have ever seen, but my sample size is pretty small ;)
I agree it's the best out there from the few that I've see that gives you fantastic intuition into what's going on. I see it as the best "invitation-to-further-exploration" available.
Just btw, I find a machine learning course at Charles University by Milan Straka better (deeper, more entertaining). Maybe I have bias, I'm studying at that school. "Thanks" to COVID, it's online and public - https://ufal.mff.cuni.cz/courses/npfl129/2021-winter#lecture.... You'd be interested in the EN lectures, CZ stands for Czech. You just won't get any certification, of course.
I can think of many - I have taken several starting since 2013. The tricky thing is that Coursera classes seem to get merged, re-mashed or otherwise re-branded. And as such only one currently is listed in my "Completed" courses section of my profile.
Having said that and with the caveat that these probably changed since I taken them, I recommend the following:
- Cryptography - https://www.coursera.org/learn/crypto - great introduction to the fundamentals and math behind cryptography. A lot of theory but also some practical exercises. This is my top recommended.
- Machine Learning - https://www.coursera.org/learn/machine-learning - a good introduction to the basic of machine learning; focuses on octave/matlab and does not dive into frameworks like scikitlearn or tensorflow
- Introduction to Interactive Programming with Python - https://www.coursera.org/learn/interactive-python-1 -
I took a course from Rice University on Python programming through making games that was fun. As far as I can tell, this is the modern incarnation in two parts.
- Functional Programming Principles in Scala - https://www.coursera.org/specializations/scala - this was a good introduction to scala and functional programming - it got me thinking in a different way
- C++ for C Programmers - https://www.coursera.org/learn/c-plus-plus-a - I think this was the first coursera class I took. This course dove into the C++ STL and a lot of modern features introduced in C++11.
> as such only one currently is listed in my "Completed" courses section of my profile.
That's surprising to me: wouldn't Coursera want learners to be reassured that whatever signalling benefit there is to completing a course will remain forever?
I took a few courses in 2013 just to see what MOOCs are really like and completed two (Programming Languages, as taken by many here, and Introduction to Mathematical Thinking, which IIRC was mostly about logic) which indeed are not listed under "completed" in my profile. I found them at https://www.coursera.org/accomplishments though.
157 comments
[ 2.8 ms ] story [ 238 ms ] threadhttps://www.coursera.org/learn/build-a-computer
Nisam/Schocken: "The Elements of Computing Systems"
I have only finished the hardware part, so far, but skimming the rest I can't find Tetris anywhere. Is that really missing, although it's in the title?
(I know that you can program Tetris on the machine you build in the course, but is it an exercise somewhere?
I wrote a Tic-Tac-Toe variant - but you could write anything, including Tetris.
In the second course you build the programming language that could be used to write Tetris, though I don't think you actually go through it as an exercise.
Note: you can also complete all the course materials just by going to nand2tetris.org.
My presentation slides promoting nand2tetris to the Austin python group: https://docs.google.com/presentation/d/1fGf2eZVOM2lHL8hFVyd2...
From my course notes, a nearly comprehensive summary of how the social sciences use models was presented:
16 uses of modeling outside prediction include from Epstein, Joshua M. (2008). Why Model?. Journal of Artificial Societies and Social Simulation:
1. Explain (very distinct from predict)
2. Guide data collection
3. Illuminate core dynamics
4. Suggest dynamical analogies
5. Discover new questions
6. Promote a scientific habit of mind
7. Bound (bracket) outcomes to plausible ranges
8. Illuminate core uncertainties
9. Offer crisis options in near-real time
10. Demonstrate tradeoffs / suggest efficiencies
11. Challenge the robustness of prevailing theory through perturbations
12. Expose prevailing wisdom as incompatible with available data
13. Train practitioners
14. Discipline the policy dialogue
15. Educate the general public
16. Reveal the apparently simple (complex) to be complex (simple)
https://news.ycombinator.com/item?id=16745042
I also really liked "Discrete optimization" (https://www.coursera.org/learn/discrete-optimization). At the time that I took it it also had a competitive element where you would solve optimization problems and there was a leader board comparing all the students in the current batch. That was when courses still started in batches and were free so the experience would probably no longer be the same, unfortunately.
As a machine learning researcher I am on the one hand glad that folks are learning more about the topic. On the other hand, this is totally the wrong approach and it will teach you the wrong lessons.
The idea that you can just treat data as a uniform dump of tables and that grinding your way to high numbers is somehow worthwhile is simply terrible. The resulting systems won't work well in the real world and they produce horrific explanations of what is going on. This class teaches you not just the wrong tools, like boosting, it teaches you the wrong mental model.
I really can't think of a worse introduction to ML than this class. Even not knowing anything would actually be better.
My main takeaway from the course was definitely not that just grinding away for higher numbers is the right thing to do (but it might be a necessary evil in a competition context). The key thing I learned here was much more about paying very close attention that your validation strategy and your testing strategy are compatible because there are many ways you can mess it up, making your models valid in-sample only. Most of the other things I had done before were also more around SVMs and neural networks and getting some experience with decision tree based algorithms was interesting.
https://www.coursera.org/specializations/algorithms
That was then hosted on Stanford's own Lagunita platform (based on the edX platform I think.)
Stanford then split those 2 courses into 4 on Coursera's new platform - the same material I believe but packaged differently.
Stanford then closed its Lagunita platform and those original 2 courses are now offered on edX.
A similar story with Alex Aiken's excellent Compiler course and Jeffrey Ullman's Automata course too. I'm not even sure if they are still available on Coursera or not.
[1] https://www.edx.org/course/algorithms-design-and-analysis
[2] https://www.edx.org/course/algorithms-design-and-analysis-pa...
[3] https://www.edx.org/course/compilers
[4] https://www.edx.org/course/automata-theory
This is always a difficult question, because it's always "high school level math" which is rarely true. Then again, some algo courses focus highly on math and proofs while others focus more on implementation.
It's quite accessible and a good introduction to artifical intelligence.
[0]: https://www.elementsofai.com/
Edit: It gives an important understanding on how our minds function and how we learn, which, I think, forms the basis of effective work. Knowing how to work, and being an effective learner are incredibly important qualities in life.
[0] https://www.coursera.org/learn/learning-how-to-learn
A lot of things in that course feels like it fairly obvious when you hear it, but often you might not have thought in those directions, and often it helps to get those things spelled out.
If I had had that course in my early teens that would have helped me a lot.
One thing that stood out for me was that I realised that the basic concept of the course was already familiar to me. Breaking down something new to learn into chunks, then forming a high-level picture of the unknown landscape and then starting to connect those chunks as you go deeper into the details.
I wonder how many people have already in some way used that process to learn something new without realising that it is indeed the most efficient way for the brain to learn a new concept.
This topic about the top Coursera courses or which ones you recommend comes up regularly here on HN.
On top of the mentioned Learning How To Learn I can recommend the following:
Terrorism and Counterterrorism: Comparing Theory and Practice by Edwin Bakker [1]
Securing Digital Democracy by J. Alex Halderman [2]
Cryptography I by Dan Boneh [3]. I didn't finish this one, but its very good...
[1] https://www.coursera.org/learn/terrorism
[2] https://www.coursera.org/learn/digital-democracy
[3] https://www.coursera.org/learn/crypto
- You will get good at anything given enough practice, so don't worry about thinking you're bad at X
- As you get good at X, you will start to like it
- Pomodoro
I'm over-simplifying of course, but I felt like the course provided a lot of concepts with very little actionable advice.
It's a very popular course because it "feels good". It is motivating, and has a very positive message. I wouldn't consider it very useful for already highly motivated and self-driven people.
I'm highly motivated and self-driven. This course isn't about motivation. It's about how we learn and how best to take advantage of that.
But I will say that knowing how the brain works and how we learn has motivated me to change my study habits. Knowing that I learn in my sleep motivates me to prime my brain for learning every day to take advantage of that. So I rarely skip a day now. Even ten minutes gets my subconscious primed and working while I sleep. The mental models you get out this course will last a lifetime.
As a non-programmer but a decent mather, I thought it presented the materials in a way that was easy to understand. In my mid-thirties now, I feel like I could have handled this at 18 just fine--but not in a patronizing way. It was just very clear and the professor had a good sense of humor.
I just built my first time-saving Python program and it felt really satisfying. I built a few others that were cool but none actually saved me time. Very satisfying! At the end of the 3 courses (~60 hours) and some additional tinkering (~40 hours), I had the skills and that's pretty cool.
Had I taken this course when I was 18, I surely would have gone for a CS degree.
https://www.coursera.org/specializations/cloudera-big-data-a...
(Not just on Coursera, but also others. You can filter for the Coursera ones.)
https://www.complexityexplorer.org/courses/104-introduction-...
The Modern World, Part One: Global History from 1760 to 1910: https://www.coursera.org/learn/modern-world (2nd part is as great as the first one)
Obligatory, Stanford CS231n: Convolutional Neural Networks for Visual Recognition [2] The assignments are excellent and will let you implement a deephish network from practically scratch, before diving into modern frameworks and applications.
[1]: https://www.coursera.org/learn/statistical-mechanics [2]: http://cs231n.stanford.edu/index.html
https://www.coursera.org/learn/solar-system
Professor Xavier Serra[1] is a highly respected veteran in the field.
[1] https://en.m.wikipedia.org/wiki/Xavier_Serra
https://www.coursera.org/learn/crypto
However as I don't use this in daily life I pretty much lost all the knowledge again :)
Also pretend or real J.P Aumasson handle?
I'd like to know enough to be able to confidently use existing tools to encrypt data at rest, transit, pub/priv key, etc.
Would this course give me such a foundation to achieve this?
But then you probably shouldn't trust my opinion, because I'm not a domain expert (although I have been involved in security design together with people who are domain experts), and whatever understanding I had is probably somewhat rusty by now .
It's fine in teaching you introductory (although it seems to cover more basics than a lot of other courses do, somehow) ML. But more importantly, it's a well designed course. You can see how each piece uses previous pieces and how it solves problems and edge cases not covered earlier.
That said, I'm yet to see better coverage of that topics (If someone knows, I'd really like to get them. I forget pieces every now and then, and having more efficient refresh method is always welcome).
https://www.youtube.com/watch?v=UzxYlbK2c7E&list=PLA89DCFA6A...
instead of the one that started Coursera:
https://www.youtube.com/watch?v=PPLop4L2eGk&list=PLLssT5z_Ds...
At the birth of Coursera in 2012, R and Python were already clearly established in the field of data science. R was the dominant open-source language for data science, with Python very close behind (and already gaining ascendancy among folks who identified with "machine learning" rather than "data science"). I remember Matlab/Octave being more associated with academics/students in EE (signal processing, wireless communications, and the like); if you want clear insight into matrix operations, Octave is great.
I think Ng made a very conscious decision at the time to eschew built-in functions and not get distracted by trendy languages - hence the use of Octave to learn how to implement algorithms at the most basic linear-algebra level.
Even at the time his decision was not well understood nor popular - way back then I remember people asking "Why Octave instead of R or Python?"
In those classes that did use Matlab, there were quite a few people sticking to Octave, though it wasn't 100% compatable. And when I got to Ng's course, I (and I imagine a whole lot of others) were really happy to see he went 100% with Octave. Had he gone the Matlab route, the old course would be pretty worthless now.
We'll never know what happened behind closed doors, but I think Matlab was sponsoring some courses in order to get new people hooked on Matlab and it just didn't pay off.
I agree with a sibling comment that it was python and R were well established at the time.
Also makes you think about how comprehension is closely tied to expression even for ostensibly similar languages.
While it does talk through the basics of ML, it is really barely a taster. It doesn’t leave you with any skills, other than, if you buy a book and work through it, you will know what a “decision tree” is ahead of time.
With something like ML, the real value is in the deep nitty gritty, building intuition about methods you use, fighting the unfair battle against broken data etc, and all those things were missing to me.
Having said that and with the caveat that these probably changed since I taken them, I recommend the following:
- Cryptography - https://www.coursera.org/learn/crypto - great introduction to the fundamentals and math behind cryptography. A lot of theory but also some practical exercises. This is my top recommended.
- Machine Learning - https://www.coursera.org/learn/machine-learning - a good introduction to the basic of machine learning; focuses on octave/matlab and does not dive into frameworks like scikitlearn or tensorflow
- Introduction to Interactive Programming with Python - https://www.coursera.org/learn/interactive-python-1 - I took a course from Rice University on Python programming through making games that was fun. As far as I can tell, this is the modern incarnation in two parts.
- Software Security - https://www.coursera.org/learn/software-security - goes into stack / overflow exploits, tools for testing, and web-based attacks
- Functional Programming Principles in Scala - https://www.coursera.org/specializations/scala - this was a good introduction to scala and functional programming - it got me thinking in a different way
- C++ for C Programmers - https://www.coursera.org/learn/c-plus-plus-a - I think this was the first coursera class I took. This course dove into the C++ STL and a lot of modern features introduced in C++11.
That's surprising to me: wouldn't Coursera want learners to be reassured that whatever signalling benefit there is to completing a course will remain forever?
I took a few courses in 2013 just to see what MOOCs are really like and completed two (Programming Languages, as taken by many here, and Introduction to Mathematical Thinking, which IIRC was mostly about logic) which indeed are not listed under "completed" in my profile. I found them at https://www.coursera.org/accomplishments though.
Thanks for pointing that out! I have 11 courses in the accomplishments and just one in "completed" courses.