I enjoy these lists that frequently pop up but I really wish for something better. Almost like a curriculum. I don't like that there are 20 different courses for X. Which one should I choose, in what order. Which ones have pre-requisite knowledge requirements, which ones don't. What programming languages does each one use? etc,etc,etc
Just look up a class you want to take, figure out what the prerequisites are (often listed in the course description or syllabus), and follow the chain of prerequisites until you hit a level that's appropriate.
You can easily look do this with a few different universities and just compare their courses for a particular subject, find the most common textbooks, etc.
And nowadays, this is even easier since you can find a MOOC or online course for basically any course in the DAG leading to nontrivial machine learning.
(Programming languages should never be a factor, unless you're choosing between two otherwise equivalent offerings.)
I shouldn't have used the word curriculum. I went to a top university and I know how frequently those prerequisite courses can be totally off base (my degree is chemical/biomolecular engineering). I used the term 'pre-requisite knowledge' because I would prefer a list of what ideas/concepts are needed to be fully understood before taking the course (ex/ instead of saying linear algebra is a prerequisite, say you need an understanding of solving linear equations using matrices but you don't need to understand linear spaces. Then you can focus your effort better and not take a 40 hour pre-req that you only need 4 hours from)
> I used the term 'pre-requisite knowledge' because I would prefer a list of what ideas/concepts are needed to be fully understood before taking the course (ex/ instead of saying linear algebra is a prerequisite, say you need an understanding of solving linear equations using matrices but you don't need to understand linear spaces.
If you are going to cherry pick concepts it may be better to just go full bore into the classes that most interest you. You will be motivated to pick up the concepts you are lacking and the learning profile will exactly fit the specific course. You wouldn't want to do this in a college setting because you are paying a lot for each hour, but as an auto-didact the time investment is on you.
If you already have a background in CS or Engineering you can probably pick up the additional concepts with focused study/refresher.
Thanks. And thats why my comment advocates for a 'better list' which would have a list of knowledge required. Then a student can choose whether they know enough that they just need to cherry pick or if they would need to take a whole different class to prepare.
The idea that you might want to focus your effort on a tiny subset of a coherently structured course's contents seems short-sighted to me.
The class you're currently looking at might only need that tiny subset, but what about classes you'll be interested in taking in the future? Do you really think it's more likely that that same tiny subset will be sufficient, or is it more likely that the utility of the class as a whole studied deeply rather than shallowly will allow you to tackle more advanced topics?
The analogy to building a foundation is very apt and especially so for a subject as ubiquitous and illuminating as linear algebra.
The course prerequisite list is, I think, usually a good balance of the right amount of information. You should usually prioritize understanding those subjects deeply if you want a high ROI thing to spend your time on.
"The course prerequisite list is, I think, usually a good balance of the right amount of information."
I strongly disagree with this statement. I see many college curricula as hugely time inefficient. Especially when you want to learn deeply on a specific topic. I personally disregarded the prerequisites for many elective engineering classes because of scheduling constraints. And anecdotally I found you only needed small pieces of the prereq's.
You can argue for a 'foundation' all you want. I was simply stating that I would like a detailed list of knowledge required to take a course instead of a generic 'you need a 100 level linear algebra course.' A detailed list would then allow people to decide if they know/remember enough info or need to learn/brush up on a topic. Speaking of linear algebra, seems like a struck a nerve with my made up example.
I also think it is a disservice to say that you need 'understanding [of] those subjects deeply if you want a high ROI.' These kind of statements discourage learning. I have seen many people struggle with so called necessary prereq's only to flourish in more advanced classes.
Conversely, I see the pursuit of quick and shallow ways of learning advanced subjects as the main reason we see posts like this one frequently posted and voted up.
People who only ever search for the quick secret trick to learning X never end up learning X for anything more complicated than for toy examples unless they already have the technical foundation upon which more advanced courses can rest.
I've seen far more people struggle in courses because of weak foundations of prerequisite knowledge than I have people who were irrationally intimidated by simpler material. Weak foundations are arguably the greatest source of problematic learning outcomes in education.
It seems strange to me that a list of prerequisites isn't sufficient. You can always just pick up some old exams or homework assignments (your own or some publically posted ones) and quickly see if you remember.
The type of person who would be discouraged by the idea that becoming fluent in sophomore mathematics would have a large ROI was never going to learn anything nontrivial without changing their mindset.
So you are arguing that weak foundations are one of the greatest sources of problematic learning outcomes. And yet you are advocating for a system that produces those poor foundations and learning outcomes. I just don't understand why you are so hung up on university/school/establishment dictated 'core/prereq' classes as being defined as the foundation.
I would argue that the current pre-req system is responsible. It lumps a full class as a pre-req. And someone can pass a full class while not understanding pieces of it. Those pieces could be the essential ones needed for the specialty knowledge a person pursues. If instead of saying generally, this requires a 200 level linear algebra course and instead enumerated the topics from that course that were necessary than people would know the foundation that is needed. You saying that 'fluency' is required in some broad course is intellectual elitism.
"I see the pursuit of quick and shallow ways of learning advanced subjects"
Also in what way is clearly defined prerequisite knowledge 'shallow'. And where is this coming from:
"People who only ever search for the quick secret trick to learning X"
You are injecting biases into this debate that weren't there in the first place to make it seem like I am advocating some kind of get rich scheme for learning things. I am actually advocating clearer and more descriptive knowledge ontologies. This would allow for better learning efficiency and overall may benefit the field. People would be able to spend more time on depth in the field they want to pursue.
Also using 'never' in an argument is a habit you need to break. It is hyperbolic and usually trivial to find counter examples.
We (Class Central) are trying to tackle this problem with our Career Guides. Our Data Science career guide is a six piece series that recommends the best MOOCs for launching yourself into the data science industry. Its inspired by The Wirecutter and we don't just give a list of courses, but also recommend the best ones.
Its still work in progress, but we have published the first two parts. Does this help? Feedback on the format and the content would be appreciated.
Part 1: The Best Intro to Programming Courses for Data Science [1]
Part 2: The Best Statistics & Probability Courses for Data Science [2]
I've completed three of the courses in the ML specialization on coursera (The UW one) and I'd definitely recommend it. It uses python (which I prefer over R or matlab) and it's really well organized with good lectures.
You can join free courses at udacity, they have a proper curriculum for Machine learning , data science.
They offer nanodegrees , check syllabus of nanodegree and follow the free courses acoording to syllabus.
For machine learning udacity courses focus on python.
PS: I am a graduate of Data analyst nanodeg @udacity
I think there should be SAAS pricing style "packages" curricula like 1 week version learn ABC by reading XYZ, 4 week version, 6 month version, etc
People generally think in terms of how much time they have - these lists are great but hard to act on - I'd like to know if I spend x hours, I'll learn y skills
Data Science is an esoteric field. I'm not sure there is a guaranteed way to become adept at it anymore than there is a good way to become an excellent software developer except to do and continuously learn and evaluate yourself. It's not a bootcamp kind of thing.
What would be awesome is some kind of a test (15 mins or so) that can actually test the levels (math, programming etc) of curious folks and then make suggestions based on what they score. I've seen Udacity do such quick tests, not sure if others do it.