Skip to content
Humanity's universal skills graph. Curated lists of awesome learning resources on various topics categorized by formats, difficulty, estimated time etc.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Learn Awesome

Gitter Twitter

Awesome learning resources organized by topics, formats and difficulty.

Learn Awesome - Awesome links from the Web by topics, formats & difficulty | Product Hunt Embed

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.

We have collected links for life, learning, thinking, communicating, health, wealth, relationships, parenting etc.

We also have math, abstract algebra, science, physics, chemistry & biology among others.

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! :-)

For hobbies, we currently have magic, music,drawing & photography. We're now starting to curate links for a few human languages as well.

You should join us to expand and improve our collection! Use this template to create a page for a new topic and send us a pull request. For discussions, come over to Gitter. Happy learning :-)


  • 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 criteria.
  • 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 people section 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 it below the course as 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.

You can’t perform that action at this time.