Skip to content
All resources

Programming Languages

Learn a language properly, then pick up the next one.

Official tutorials, free books and practice sites for the languages students use most. Learn one well first, the rest come faster.

110 resourcesSuggest a resource

Learning path

Work through these in order. Each step builds on the last.

Everything in Programming Languages

The Python Tutorial

The official Python tutorial covering the core language, from basics to classes.

docs.python.org

Docs

CS50's Introduction to Programming with Python

Harvard's free beginner course on Python with lectures and problem sets.

cs50.harvard.edu

Course

Automate the Boring Stuff with Python

A free book that teaches Python through practical automation projects.

automatetheboringstuff.com

Book

Learn C++

The most thorough free C++ tutorial on the web, kept up to date with modern C++.

learncpp.com

Guide

Exercism

Free coding exercises in 70+ languages with optional human mentoring.

exercism.org

Practice

The Modern JavaScript Tutorial

A complete, modern JavaScript tutorial from basics to advanced topics.

javascript.info

Guide

The Rust Programming Language

The official Rust book, the standard way to learn the language.

doc.rust-lang.org

Book

A Tour of Go

An interactive in-browser tour of Go's syntax, types and concurrency.

go.dev

Course

Python Documentation

The official Python reference for the language and standard library.

docs.python.org

Docs

Think Python

Allen Downey's free beginner book on Python and thinking like a programmer.

allendowney.github.io

Book

Python Crash Course

A best-selling beginner Python book with three hands-on projects.

nostarch.com

Book

Real Python

Thousands of practical Python tutorials, from basics to web and data work.

realpython.com

Guide

Corey Schafer Python Tutorials

Clear, well-paced YouTube tutorials on Python fundamentals and libraries.

youtube.com

Video

Python for Everybody

Dr Chuck's free beginner Python course with videos, book and exercises.

py4e.com

Course

University of Helsinki Python MOOC

A free, rigorous intro programming course in Python with auto-graded exercises.

programming-25.mooc.fi

Course

Fluent Python

The go-to book for writing idiomatic, advanced Python.

oreilly.com

Book

Dev.java Learn

Oracle's official modern Java tutorials, from first program to advanced features.

dev.java

Docs

The Java Tutorials

Oracle's classic Java tutorial trail covering the language and core libraries.

docs.oracle.com

Docs

Java Programming MOOC

University of Helsinki's free Java course with hundreds of graded exercises.

java-programming.mooc.fi

Course

Baeldung

Practical articles on Java, Spring and the JVM ecosystem.

baeldung.com

Guide

Head First Java

A visual, beginner-friendly book for learning Java and object-oriented programming.

oreilly.com

Book

Beej's Guide to C Programming

A free, friendly guide to C with a full library reference.

beej.us

Book

The C Programming Language (K&R)

Kernighan and Ritchie's short classic, still the best-known book on C.

en.wikipedia.org

Book

Modern C

Jens Gustedt's free book on writing C the modern, standards-based way.

gustedt.gitlabpages.inria.fr

Book

cppreference

The community reference for C and C++ language features and standard libraries.

en.cppreference.com

Docs

C++ Core Guidelines

Stroustrup and Sutter's guidelines for writing safe, modern C++.

isocpp.github.io

Guide

The Cherno C++ Series

A long, popular YouTube series on C++ from a game engine developer.

youtube.com

Video

Learn X in Y Minutes

Quick, code-first tours of the syntax of hundreds of languages.

learnxinyminutes.com

Cheatsheet

MDN JavaScript Guide

Mozilla's official JavaScript guide and reference.

developer.mozilla.org

Docs

Eloquent JavaScript

A free, beautifully written book on JavaScript and programming.

eloquentjavascript.net

Book

You Don't Know JS Yet

A free book series that digs into how JavaScript really works.

github.com

Book

TypeScript Handbook

The official guide to TypeScript's type system and everyday use.

typescriptlang.org

Docs

TypeScript Playground

Write TypeScript in the browser and see the compiled JavaScript and types.

typescriptlang.org

Tool

Total TypeScript

Matt Pocock's TypeScript tutorials, including a free beginner book and workshops.

totaltypescript.com

Course

Type Challenges

Puzzles that teach TypeScript's type system from easy to extreme.

github.com

Practice

Go by Example

Annotated example programs covering every major Go feature.

gobyexample.com

Guide

Effective Go

The official guide to writing clear, idiomatic Go.

go.dev

Docs

Learn Go with Tests

Learn Go by writing tests first, from basics to building an app.

quii.gitbook.io

Book

Go Playground

Run and share Go code in the browser.

go.dev

Tool

Rust by Example

Learn Rust through runnable, annotated examples.

doc.rust-lang.org

Guide

Rustlings

Small exercises that get you reading and writing Rust code.

github.com

Practice

Comprehensive Rust

Google's free multi-day Rust course used to train Android engineers.

google.github.io

Course

Rust Playground

Compile and run Rust in the browser and share snippets.

play.rust-lang.org

Tool

Kotlin Docs

The official Kotlin documentation with a getting-started tour.

kotlinlang.org

Docs

Kotlin Koans

Short in-browser exercises that teach Kotlin syntax and idioms.

play.kotlinlang.org

Practice

The Swift Programming Language

Apple's official Swift book, from a guided tour to the full reference.

docs.swift.org

Book

Hacking with Swift

Paul Hudson's free Swift and SwiftUI tutorials, including 100 Days of Swift.

hackingwithswift.com

Course

C# Documentation

Microsoft's official C# docs and interactive tutorials.

learn.microsoft.com

Docs

Microsoft Learn C# for Beginners

Free beginner videos and courses on C# from Microsoft.

dotnet.microsoft.com

Course

SQLBolt

Interactive lessons that teach SQL queries in the browser.

sqlbolt.com

Practice

SQLZoo

Long-running interactive SQL tutorials and quizzes.

sqlzoo.net

Practice

SQL Tutorial for Data Analysis

A practical SQL tutorial for data analysis, from basic to advanced.

thoughtspot.com

Guide

PostgreSQL Exercises

Practise SQL against a real PostgreSQL database in the browser.

pgexercises.com

Practice

SQL Murder Mystery

Solve a murder case by writing SQL queries, a fun way to practise.

mystery.knightlab.com

Practice

The Linux Command Line

William Shotts' free book on the shell and writing Bash scripts.

linuxcommand.org

Book

Bash Guide (Greg's Wiki)

A careful guide to Bash that teaches the right way to write scripts.

mywiki.wooledge.org

Guide

ShellCheck

Paste a shell script and get warnings about bugs and bad practices.

shellcheck.net

Tool

explainshell

Paste a command line and see what each part does, from the man pages.

explainshell.com

Tool

Learn You a Haskell for Great Good

A fun, illustrated free book for learning Haskell from scratch.

learnyouahaskell.github.io

Book

Haskell MOOC

University of Helsinki's free Haskell course with graded exercises.

haskell.mooc.fi

Course

OCaml Programming: Correct + Efficient + Beautiful

Cornell's free functional programming textbook and videos using OCaml.

cs3110.github.io

Book

Elixir Getting Started

The official guide to Elixir's syntax, processes and tooling.

hexdocs.pm

Docs

Exercism Language Tracks

Pick any language and work through a structured syllabus of exercises.

exercism.org

Practice

Codecademy Catalog

Interactive beginner courses for most popular languages, many free.

codecademy.com

Course

freeCodeCamp YouTube

Hundreds of free full-length language courses, from Python to Rust.

youtube.com

Video

Programming with Mosh

Popular beginner tutorials on Python, JavaScript, Java, C# and SQL.

youtube.com

Video

Bro Code

Free full-length beginner courses on many languages, short and to the point.

youtube.com

Video

Fireship

Fast "in 100 seconds" overviews of languages and tools before you dive in.

youtube.com

Video

CodeWithHarry

Hindi beginner courses on Python, C, C++, Java and JavaScript.

youtube.com

Video

Apna College

Hindi lectures on C++, Java and placement preparation for college students.

youtube.com

Video

W3Schools

Quick beginner tutorials and try-it editors for many languages.

w3schools.com

Guide

DevDocs

Fast, searchable offline-capable docs for hundreds of languages and libraries.

devdocs.io

Tool

Rosetta Code

The same tasks solved in hundreds of languages, great for comparing syntax.

rosettacode.org

Repo

Compiler Explorer

See the assembly your C, C++, Rust or Go code compiles to, instantly.

godbolt.org

Tool

OneCompiler

Run code in 60+ languages from the browser with no setup.

onecompiler.com

Tool

Replit

An online IDE to write and run code in many languages from the browser.

replit.com

Tool

Python Tutor

Visualise Python, Java, C and JavaScript code running step by step.

pythontutor.com

Tool

Codewars

Solve community kata in dozens of languages and learn from others' solutions.

codewars.com

Practice

HackerRank Language Tracks

Language-focused practice for Python, Java, C++, SQL and more.

hackerrank.com

Practice

Awesome Python

A curated list of the best Python libraries, frameworks and resources.

github.com

Repo

Awesome Go

A curated list of Go libraries, tools and learning resources.

github.com

Repo

Awesome Rust

A curated list of Rust code, tools and learning resources.

github.com

Repo

Awesome C++

A curated list of C++ libraries, frameworks and resources.

github.com

Repo

QuickRef.ME

Compact cheatsheets for many languages and command-line tools.

quickref.me

Cheatsheet

Hyperpolyglot

Side-by-side syntax comparisons between related programming languages.

hyperpolyglot.org

Cheatsheet

Rust Cheat Sheet

A dense, well-organised reference of Rust syntax and idioms.

cheats.rs

Cheatsheet

Kotlin for Java Developers

JetBrains' free course that teaches Kotlin to people who know Java.

coursera.org

Course

Go Documentation

Official Go docs, tutorials and the language spec.

go.dev

Docs

The Rust Standard Library

The official reference for Rust's standard library types and traits.

doc.rust-lang.org

Docs

Rust Reddit

A friendly, active community for Rust news and questions.

reddit.com

Community

Python Discord

A large, welcoming Discord server for Python learners and help.

pythondiscord.com

Community

Talk Python To Me

A long-running podcast on Python and its ecosystem.

talkpython.fm

Podcast

Python Weekly

A free weekly newsletter of Python articles, projects and news.

pythonweekly.com

Article

JavaScript Weekly

A weekly newsletter of JavaScript news, articles and libraries.

javascriptweekly.com

Article

Golang Weekly

A weekly newsletter of Go articles, news and projects.

golangweekly.com

Article

This Week in Rust

The weekly roundup of Rust community news, blog posts and crates.

this-week-in-rust.org

Article

Seven Languages in Seven Weeks

A tour of seven languages and paradigms, from Prolog to Haskell.

pragprog.com

Book

Programming Languages (Dan Grossman)

A famous course on functional programming and language design using ML, Racket and Ruby.

coursera.org

Course

How to Design Programs

A free classic book that teaches systematic program design using Racket.

htdp.org

Book

roadmap.sh Python

A visual roadmap of what to learn in Python, with linked resources.

roadmap.sh

Roadmap

roadmap.sh Java

A step-by-step roadmap for learning Java and its ecosystem.

roadmap.sh

Roadmap

roadmap.sh C++

A visual roadmap of C++ topics from basics to modern features.

roadmap.sh

Roadmap

roadmap.sh Rust

A visual roadmap for learning Rust, with links for each topic.

roadmap.sh

Roadmap

roadmap.sh Go

A visual roadmap for learning Go and its tooling.

roadmap.sh

Roadmap

Dart Language Tour

The official tour of Dart, the language behind Flutter.

dart.dev

Docs

Ruby in Twenty Minutes

The official quick start for Ruby, a friendly scripting language.

ruby-lang.org

Guide

PHP Manual

The official PHP documentation with a getting-started tutorial.

php.net

Docs

Zig Learn

The official starting point for Zig, a modern systems language.

ziglang.org

Docs

Stack Overflow Developer Survey

See which languages developers use and love each year before choosing one.

survey.stackoverflow.co

Article

TIOBE Index

A monthly ranking of programming language popularity.

tiobe.com

Article