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.
Step 1: Pick a first language
Python is the easiest start; C if your syllabus needs it.
Step 2: Learn it properly
Work through a complete book or tutorial, not just videos.
Step 3: Practise every day
Step 4: Learn a second language
A different style teaches you something new.
The Modern JavaScript Tutorial
A complete, modern JavaScript tutorial from basics to advanced topics.
javascript.info
GuideThe Rust Programming Language
The official Rust book, the standard way to learn the language.
doc.rust-lang.org
BookA Tour of Go
An interactive in-browser tour of Go's syntax, types and concurrency.
go.dev
Course
Everything in Programming Languages
The Python Tutorial
The official Python tutorial covering the core language, from basics to classes.
docs.python.org
CS50's Introduction to Programming with Python
Harvard's free beginner course on Python with lectures and problem sets.
cs50.harvard.edu
Automate the Boring Stuff with Python
A free book that teaches Python through practical automation projects.
automatetheboringstuff.com
Learn C++
The most thorough free C++ tutorial on the web, kept up to date with modern C++.
learncpp.com
Exercism
Free coding exercises in 70+ languages with optional human mentoring.
exercism.org
The Modern JavaScript Tutorial
A complete, modern JavaScript tutorial from basics to advanced topics.
javascript.info
The Rust Programming Language
The official Rust book, the standard way to learn the language.
doc.rust-lang.org
A Tour of Go
An interactive in-browser tour of Go's syntax, types and concurrency.
go.dev
Python Documentation
The official Python reference for the language and standard library.
docs.python.org
Think Python
Allen Downey's free beginner book on Python and thinking like a programmer.
allendowney.github.io
Python Crash Course
A best-selling beginner Python book with three hands-on projects.
nostarch.com
Real Python
Thousands of practical Python tutorials, from basics to web and data work.
realpython.com
Corey Schafer Python Tutorials
Clear, well-paced YouTube tutorials on Python fundamentals and libraries.
youtube.com
Python for Everybody
Dr Chuck's free beginner Python course with videos, book and exercises.
py4e.com
University of Helsinki Python MOOC
A free, rigorous intro programming course in Python with auto-graded exercises.
programming-25.mooc.fi
Fluent Python
The go-to book for writing idiomatic, advanced Python.
oreilly.com
Dev.java Learn
Oracle's official modern Java tutorials, from first program to advanced features.
dev.java
The Java Tutorials
Oracle's classic Java tutorial trail covering the language and core libraries.
docs.oracle.com
Java Programming MOOC
University of Helsinki's free Java course with hundreds of graded exercises.
java-programming.mooc.fi
Baeldung
Practical articles on Java, Spring and the JVM ecosystem.
baeldung.com
Head First Java
A visual, beginner-friendly book for learning Java and object-oriented programming.
oreilly.com
Beej's Guide to C Programming
A free, friendly guide to C with a full library reference.
beej.us
The C Programming Language (K&R)
Kernighan and Ritchie's short classic, still the best-known book on C.
en.wikipedia.org
Modern C
Jens Gustedt's free book on writing C the modern, standards-based way.
gustedt.gitlabpages.inria.fr
cppreference
The community reference for C and C++ language features and standard libraries.
en.cppreference.com
C++ Core Guidelines
Stroustrup and Sutter's guidelines for writing safe, modern C++.
isocpp.github.io
The Cherno C++ Series
A long, popular YouTube series on C++ from a game engine developer.
youtube.com
Learn X in Y Minutes
Quick, code-first tours of the syntax of hundreds of languages.
learnxinyminutes.com
MDN JavaScript Guide
Mozilla's official JavaScript guide and reference.
developer.mozilla.org
Eloquent JavaScript
A free, beautifully written book on JavaScript and programming.
eloquentjavascript.net
You Don't Know JS Yet
A free book series that digs into how JavaScript really works.
github.com
TypeScript Handbook
The official guide to TypeScript's type system and everyday use.
typescriptlang.org
TypeScript Playground
Write TypeScript in the browser and see the compiled JavaScript and types.
typescriptlang.org
Total TypeScript
Matt Pocock's TypeScript tutorials, including a free beginner book and workshops.
totaltypescript.com
Type Challenges
Puzzles that teach TypeScript's type system from easy to extreme.
github.com
Go by Example
Annotated example programs covering every major Go feature.
gobyexample.com
Effective Go
The official guide to writing clear, idiomatic Go.
go.dev
Learn Go with Tests
Learn Go by writing tests first, from basics to building an app.
quii.gitbook.io
Go Playground
Run and share Go code in the browser.
go.dev
Rust by Example
Learn Rust through runnable, annotated examples.
doc.rust-lang.org
Rustlings
Small exercises that get you reading and writing Rust code.
github.com
Comprehensive Rust
Google's free multi-day Rust course used to train Android engineers.
google.github.io
Rust Playground
Compile and run Rust in the browser and share snippets.
play.rust-lang.org
Kotlin Docs
The official Kotlin documentation with a getting-started tour.
kotlinlang.org
Kotlin Koans
Short in-browser exercises that teach Kotlin syntax and idioms.
play.kotlinlang.org
The Swift Programming Language
Apple's official Swift book, from a guided tour to the full reference.
docs.swift.org
Hacking with Swift
Paul Hudson's free Swift and SwiftUI tutorials, including 100 Days of Swift.
hackingwithswift.com
C# Documentation
Microsoft's official C# docs and interactive tutorials.
learn.microsoft.com
Microsoft Learn C# for Beginners
Free beginner videos and courses on C# from Microsoft.
dotnet.microsoft.com
SQLBolt
Interactive lessons that teach SQL queries in the browser.
sqlbolt.com
SQLZoo
Long-running interactive SQL tutorials and quizzes.
sqlzoo.net
SQL Tutorial for Data Analysis
A practical SQL tutorial for data analysis, from basic to advanced.
thoughtspot.com
PostgreSQL Exercises
Practise SQL against a real PostgreSQL database in the browser.
pgexercises.com
SQL Murder Mystery
Solve a murder case by writing SQL queries, a fun way to practise.
mystery.knightlab.com
The Linux Command Line
William Shotts' free book on the shell and writing Bash scripts.
linuxcommand.org
Bash Guide (Greg's Wiki)
A careful guide to Bash that teaches the right way to write scripts.
mywiki.wooledge.org
ShellCheck
Paste a shell script and get warnings about bugs and bad practices.
shellcheck.net
explainshell
Paste a command line and see what each part does, from the man pages.
explainshell.com
Learn You a Haskell for Great Good
A fun, illustrated free book for learning Haskell from scratch.
learnyouahaskell.github.io
Haskell MOOC
University of Helsinki's free Haskell course with graded exercises.
haskell.mooc.fi
OCaml Programming: Correct + Efficient + Beautiful
Cornell's free functional programming textbook and videos using OCaml.
cs3110.github.io
Elixir Getting Started
The official guide to Elixir's syntax, processes and tooling.
hexdocs.pm
Exercism Language Tracks
Pick any language and work through a structured syllabus of exercises.
exercism.org
Codecademy Catalog
Interactive beginner courses for most popular languages, many free.
codecademy.com
freeCodeCamp YouTube
Hundreds of free full-length language courses, from Python to Rust.
youtube.com
Programming with Mosh
Popular beginner tutorials on Python, JavaScript, Java, C# and SQL.
youtube.com
Bro Code
Free full-length beginner courses on many languages, short and to the point.
youtube.com
Fireship
Fast "in 100 seconds" overviews of languages and tools before you dive in.
youtube.com
CodeWithHarry
Hindi beginner courses on Python, C, C++, Java and JavaScript.
youtube.com
Apna College
Hindi lectures on C++, Java and placement preparation for college students.
youtube.com
W3Schools
Quick beginner tutorials and try-it editors for many languages.
w3schools.com
DevDocs
Fast, searchable offline-capable docs for hundreds of languages and libraries.
devdocs.io
Rosetta Code
The same tasks solved in hundreds of languages, great for comparing syntax.
rosettacode.org
Compiler Explorer
See the assembly your C, C++, Rust or Go code compiles to, instantly.
godbolt.org
OneCompiler
Run code in 60+ languages from the browser with no setup.
onecompiler.com
Replit
An online IDE to write and run code in many languages from the browser.
replit.com
Python Tutor
Visualise Python, Java, C and JavaScript code running step by step.
pythontutor.com
Codewars
Solve community kata in dozens of languages and learn from others' solutions.
codewars.com
HackerRank Language Tracks
Language-focused practice for Python, Java, C++, SQL and more.
hackerrank.com
Awesome Python
A curated list of the best Python libraries, frameworks and resources.
github.com
Awesome Go
A curated list of Go libraries, tools and learning resources.
github.com
Awesome Rust
A curated list of Rust code, tools and learning resources.
github.com
Awesome C++
A curated list of C++ libraries, frameworks and resources.
github.com
QuickRef.ME
Compact cheatsheets for many languages and command-line tools.
quickref.me
Hyperpolyglot
Side-by-side syntax comparisons between related programming languages.
hyperpolyglot.org
Rust Cheat Sheet
A dense, well-organised reference of Rust syntax and idioms.
cheats.rs
Kotlin for Java Developers
JetBrains' free course that teaches Kotlin to people who know Java.
coursera.org
Go Documentation
Official Go docs, tutorials and the language spec.
go.dev
The Rust Standard Library
The official reference for Rust's standard library types and traits.
doc.rust-lang.org
Rust Reddit
A friendly, active community for Rust news and questions.
reddit.com
Python Discord
A large, welcoming Discord server for Python learners and help.
pythondiscord.com
Talk Python To Me
A long-running podcast on Python and its ecosystem.
talkpython.fm
Python Weekly
A free weekly newsletter of Python articles, projects and news.
pythonweekly.com
JavaScript Weekly
A weekly newsletter of JavaScript news, articles and libraries.
javascriptweekly.com
Golang Weekly
A weekly newsletter of Go articles, news and projects.
golangweekly.com
This Week in Rust
The weekly roundup of Rust community news, blog posts and crates.
this-week-in-rust.org
Seven Languages in Seven Weeks
A tour of seven languages and paradigms, from Prolog to Haskell.
pragprog.com
Programming Languages (Dan Grossman)
A famous course on functional programming and language design using ML, Racket and Ruby.
coursera.org
How to Design Programs
A free classic book that teaches systematic program design using Racket.
htdp.org
roadmap.sh Python
A visual roadmap of what to learn in Python, with linked resources.
roadmap.sh
roadmap.sh Java
A step-by-step roadmap for learning Java and its ecosystem.
roadmap.sh
roadmap.sh C++
A visual roadmap of C++ topics from basics to modern features.
roadmap.sh
roadmap.sh Rust
A visual roadmap for learning Rust, with links for each topic.
roadmap.sh
roadmap.sh Go
A visual roadmap for learning Go and its tooling.
roadmap.sh
Dart Language Tour
The official tour of Dart, the language behind Flutter.
dart.dev
Ruby in Twenty Minutes
The official quick start for Ruby, a friendly scripting language.
ruby-lang.org
PHP Manual
The official PHP documentation with a getting-started tutorial.
php.net
Zig Learn
The official starting point for Zig, a modern systems language.
ziglang.org
Stack Overflow Developer Survey
See which languages developers use and love each year before choosing one.
survey.stackoverflow.co
TIOBE Index
A monthly ranking of programming language popularity.
tiobe.com
Nothing here matches those filters.