Skip to content
Learn

Write. Run. Fail. Understand.

Programming is learned by doing, and by understanding what went wrong. ScriptOnX keeps both in one loop.

Why ScriptOnX exists

Errors aren't failures. They're where learning starts.

Behind every red message is a concept worth understanding. ScriptOnX makes that connection for you.

  • SyntaxErrorinvalid syntax
    → SyntaxHow a language is written
  • TypeErrorcan only concatenate str
    → Data typesWhat kind of value is this?
  • IndexErrorlist index out of range
    → ArraysPositions start at zero
  • NullPointerExceptionat Main.main(Main.java:7)
    → ObjectsReferences can point at nothing
  • Segmentation faultcore dumped
    → MemoryWho owns this address?

The learning loop

Every mistake runs through the same loop. And comes out as skill.

  1. Write

    Write a real program in the ScriptOnX editor.

    age = 19print("Turns " + age + 1)
  2. Run

    Execute it and watch the output.

    age = 19print("Turns " + age + 1)

    $ python lesson.py

  3. Debug

    See exactly where — and why — it stopped.

    age = 19print("Turns " + age + 1)

    TypeError: can only concatenate str (not "int") to str

  4. Ask AI

    Ask ScriptOnX about the error, not for the answer.

    Why can't I add age to the text?

    ScriptOnX AI+ does two jobs: it adds numbers and joins text. Which kind of value is age?
  5. Understand

    Learn the concept underneath the message.

    "Turns "str · text
    ageint · number

    Text and numbers can't be joined with + until they're the same type.

  6. Fix

    Correct the program yourself.

    age = 19print("Turns", age + 1)

    ✓ Turns 20

  7. Improve

    Watch the concept move from shaky to solid.

    • Data types46% → 78%
    • Strings70% → 82%
    • Illustrative progress
Learning

The languages your course teaches. The tools checked for you.

Languages

  • PythonBeta
  • CBeta
  • C++Beta
  • JavaNeeds a Java Development Kit (JDK) on the computer.Beta
  • JavaScriptRuns on Node.js.Beta
  • SQLIn Database Lab, on SQLite. MySQL and MongoDB connections are in testing.Beta
  • TypeScriptNot runnable yet.Planned
  • HTML/CSSNot runnable yet.Planned

Learning tools

  • Learning environments

    Beta

    Checks that the compilers and tools a course needs are installed and working. One-click installs are in testing.

  • Database Lab

    Beta

    SQL against a local SQLite database. MySQL and MongoDB connections in testing.

  • Practice library

    Planned

    Exercises with test cases across the curriculum.

  • Progress & mastery

    Planned

    Concept mastery, streaks and course progress.

Visual debuggingPlanned

See what your code is actually doing.

Step through a program line by line and watch every variable change.

total = 0for n in [1, 2, 3]:    total = total + nprint(total)
Variables
  • total0

total starts at 0.

$

Concept demo. Also planned: call stack, memory view, loop visualisation.

See your next error differently.