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 browser

    Used 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 browser

    Used 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 browser

    Used 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 21

    Used 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.0

    Used 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.94

    Used 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.4

    Used 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.