Explore
Pick a language
Every language here has a learning path you can read in order, exercises that check your answer by running it, and a playground. Where a language runs in your browser, it says so; where it does not yet, the page says that instead.
New to programming?
Start with Python: readable syntax, immediate results, and it runs right here in your browser.
Working with data?
SQL first, then Python for analysis.
Building for the web?
JavaScript, then TypeScript once the basics feel natural.
SQL
Ask questions of data
The language of relational databases: reading, filtering, joining and summarising tables. Runs in your browser here on a real SQLite engine.
Beginner-friendlyRuns in your browserUsed for: Data analysis, Reporting, Backend development, Data engineering
32 tutorials · 42 exercises
Python
Readable code for almost anything
A general-purpose language known for clear syntax and a huge standard library. The usual first language for data work, automation and backend services.
Beginner-friendlyRuns in your browserUsed for: Data science, Automation and scripting, Web backends, Machine learning
17 lessons · 9 exercises
JavaScript
The language of the web
Runs in every browser and, with Node.js, on servers too. Event-driven, flexible and everywhere front-end work happens.
Beginner-friendlyRuns in your browserUsed for: Front-end web apps, Node.js backends, Browser extensions, Tooling
19 lessons · 9 exercises
Java
Strongly typed, runs everywhere
A statically typed, object-oriented language with a mature ecosystem. Common in large backends, Android apps and enterprise systems.
ModerateExamples verified with OpenJDK 21Used for: Enterprise backends, Android apps, Large-scale systems, Big-data tooling
8 lessons · 0 exercises
C++
Performance with abstractions
A systems language with classes, templates and the Standard Template Library. The language of game engines, high-frequency systems and competitive programming.
ChallengingExamples verified with GCC 13 (C++17)Used for: Systems and games, High-performance computing, Competitive programming, Embedded software
14 lessons · 0 exercises
C
Close to the machine
The small, portable language beneath most operating systems and runtimes. Teaches memory, pointers and how programs really execute.
ChallengingExamples verified with GCC 13 (C11)Used for: Operating systems, Embedded devices, Compilers and runtimes, Performance-critical libraries
14 lessons · 0 exercises
C#
Modern, typed, productive
Microsoft's object-oriented language for the .NET platform: web services, desktop software and Unity games, with strong tooling.
ModerateExamples verified with .NET SDK 8.0Used for: .NET web services, Desktop apps, Unity games, Enterprise software
3 lessons · 13 exercises · 13 interview questions
Rust
Memory safety without a garbage collector
A systems language whose compiler enforces ownership rules, preventing whole classes of memory bugs. Used where C++ was, with more guarantees.
ChallengingExamples verified with rustc 1.94Used for: Systems programming, WebAssembly, Command-line tools, Backends that need speed
5 lessons · 13 exercises · 12 interview questions
PHP
The web's workhorse
A server-side scripting language behind a large share of the web, including WordPress and Laravel applications.
Beginner-friendlyExamples verified with PHP 8.4Used for: Web backends, Content management systems, E-commerce, APIs
9 lessons · 14 exercises · 12 interview questions
In preparation: TypeScript, Go, Kotlin, R. Their learning paths are being written and verified; they will appear here when ready. TypeScript already runs in the playground.
Not sure which to start with?
The first lessons in every language are short. Try two, and stay with the one where you could picture using it next week. The concepts transfer: loops, functions and collections are the same ideas everywhere.
Where does progress live?
In your browser only. There is no account. You can export your progress as a file from any practice page and import it on another device.