Learning resources

Learning resources

Documentation, books and courses worth your time, grouped by topic. Most are free, and official documentation comes first wherever it exists.

These are links to external sites, not sponsored or affiliate links. Each description says what the resource is, so you can judge whether it fits what you are learning.

Foundations

  • CS50’s Introduction to Computer Science

    CourseFreeHarvard University

    An introductory computer science course covering C, Python, SQL, data structures, memory and the web, with problem sets.

  • Introduction to Algorithms (6.006)

    CourseFreeMIT OpenCourseWare

    MIT’s undergraduate algorithms course: lecture videos, notes and problem sets on sorting, hashing, graphs and dynamic programming.

  • Exercism

    PracticeFreeExercism

    Small programming exercises in dozens of languages, with automated tests and optional feedback from mentors.

Software Engineering

Software Engineering articles
  • Pro Git

    BookFreeScott Chacon and Ben Straub

    The Git book, free online: from the basics of commits and branches to how Git stores data internally.

  • MDN Web Docs

    DocumentationFreeMozilla

    Reference documentation and guides for HTML, CSS, JavaScript and web APIs.

  • The Pragmatic Programmer, 20th Anniversary Edition

    BookPaidDavid Thomas and Andrew Hunt

    A book of practical habits for working programmers: managing change, debugging, automation and taking responsibility for code.

Backend Development

  • PostgreSQL Documentation

    DocumentationFreeThe PostgreSQL Global Development Group

    The official manual, including a SQL tutorial, indexes, transactions and query planning.

  • Node.js Documentation

    DocumentationFreeOpenJS Foundation

    The API reference for Node.js: modules, the file system, streams, HTTP and the event loop.

  • HTTP on MDN

    GuideFreeMozilla

    How HTTP works: requests and responses, methods, status codes, headers, caching and cookies.

System Design

  • Designing Data-Intensive Applications

    BookPaidMartin Kleppmann

    A book on the ideas behind data systems: storage engines, replication, partitioning, transactions and stream processing.

  • The System Design Primer

    GuideFreeDonne Martin

    An open-source collection of notes on scalability, caching, load balancing and databases, with worked design exercises.

Artificial Intelligence

  • Machine Learning Crash Course

    CourseFreeGoogle

    A self-paced introduction to machine learning with lessons, interactive visualisations and exercises.

  • Practical Deep Learning for Coders

    CourseFreefast.ai

    A code-first deep learning course that starts by training working models and explains the theory along the way.

Data Science

  • The Python Tutorial

    DocumentationFreePython Software Foundation

    The official introduction to Python, from data structures and modules to errors and classes.

  • pandas: Getting started

    DocumentationFreepandas

    Installation and introductory tutorials for working with tabular data in pandas.

  • scikit-learn User Guide

    DocumentationFreescikit-learn

    Explanations of the main machine-learning methods in scikit-learn, with model evaluation and preprocessing.

Environmental Technology