Awesome learning resources organized by topics, formats and difficulty.
What is learn-awesome?
With the explosion of information available on the Internet, it has become difficult to find the best learning resources on any topic. Some really amazing things are available on the Web, but learning platforms are typically tied to a single format and want to keep you within their site/app. In other words, learning apps are not actually learner-centric. For any given topic (say, machine learning), it should be easy to find best courses, best podcasts, best books, best articles, best Q&A sites, best chat groups, best people to follow, the best research papers, best interactive exercises/playgrounds and so on.
A lot of our current users are programmers. And so we have: Git, algorithms, artificial intelligence, compilers, computer science, computer security, computer vision, cryptocurrency, cryptography, deep learning, machine learning, and programming. And of course a whole bunch of programming languages! :-)
- Always put the learner first.
- Have a high bar for quality. The Internet is full of awesome things as well as trash.
- Only add links you think are awesome.
- Do not promote your own books / articles / videos etc. If it's good, it will show up.
- Remove any affiliate codes etc from the links.
- Search existing resources/links before adding a new one, as yours may be a duplicate.
- Paid resources (like courses) are okay, but they should be marked as
paid. Remember, quality is the first criterion.
- Try to add this metadata with every link whenever relevant:
- Year (to know how old a resource is)
- Estimated time it will take to complete (reading, watching, completing course exercises etc.)
- Difficulty level (beginner / intermediate / expert)
- Author. Add them in the
peoplesection whenever they're worth following for that topic.
- Use the following format:
[Name](link) (Year, Time Estimate, Difficulty level) by Author - Description.
- If you want to add notes to a course, add them below the course as a subdashed point.
- Links should be put into their appropriate topics & formats. Pick the one you think is closest if you are not sure.
- Build a useful concept graph by specifying prerequisites and subtopics. This is often hard.
- For a new topic, start with this template.
- New categories or improvements to the existing categorization are welcome.
- Check your spelling and grammar.
- Discuss your ideas & questions over at Gitter.
- Thank you for your contributions!
The problem of optimal learning goes beyond simply collecting links. An effective learning system needs to support personalization on at least a few dimensions:
- What formats does the student prefer? The same set of ideas can be consumed in a course, in a shorter TED talk, in a book, in a podcast, in an article etc. The student should be able to filter the set of links on this dimension.
- What's the context of the learning goal? Imagine student A who wants to learn linear algebra for its own sake vs student B who wants to learn it in the context of machine learning. Both will benefit from different learning resources.
- How much time does the student have for learning any topic? When you're short on time, you might prefer a book summary, rather than the original book itself.
- What does the student already know?
- What learning method has the student found most effective?
Eventually, we plan to build a learning app that, instead of locking you in, leverages the awesomeness of the entire Web. Think web directories before Google but one that adapts to you learning goals. However, the first step is to collect the links to the best resources and more importantly, the metadata about them (such as, estimated time reading). In this repo, we create a markdown file for each topic with a specific structure. See the template.