Course · written by Novus Learn
JavaScript, from zero to developer
By the end you can read, write, debug and test plain JavaScript on your own: model real data, write functions other people can use, handle failure deliberately, prove your code works with tests you wrote yourself, and explain every line of it. You will not need a framework, a tutorial video, or a copy-paste answer to build a small library end to end.
JavaScript has a full written course here because it is a language this site can actually run on your device. Your exercises are graded in a sandbox in this browser, with no account and no server. Every lesson is written in our own words and every claim in it cites the official documentation, so you can check the source yourself. Nothing on this page was generated when you loaded it: it is written, committed and reviewed like the rest of the site.
12 modules · 77 lessons · 71 hours of authored material · 94 graded exercises across 65 lessons. Last verified against the docs on 2026-07-31.
How long it takes
71 hours of material. That is the sum of the lesson estimates, not a marketing number . Pick a pace you can keep.
- 1 h/day
~10 weeks
- 2 h/day
~5 weeks
- 3 h/day
~3 weeks
- Full time, 6 h/day
~12 days
The 12 modules
- 1. Programs, values, and types0/8 lessons · 6h · 10 exercises
Run a program, print a value, and name every kind of value JavaScript has.
- What a program actually is40 min · 1 exercise
- Running a program and reading its output40 min · 1 exercise
- Numbers and arithmetic50 min · 2 exercises
- Text values, a first look45 min · 1 exercise
- True, false, and comparing values45 min · 1 exercise
- Naming values: let and const45 min · 1 exercise
- undefined, null, and naming every type45 min · 1 exercise
- Coercion, and the two kinds of equals50 min · 2 exercises
- 2. Making decisions0/6 lessons · 5h · 7 exercises
Make a program take a different path depending on its input.
Builds on Programs, values, and types, you can start here anyway, but that is the order it was written in.
- if, else, and blocks50 min · 2 exercises
- Truthiness and the falsy values45 min · 1 exercise
- and, or, and the nullish fallback55 min · 1 exercise
- switch, and when to avoid it45 min · 1 exercise
- The conditional operator45 min · 1 exercise
- Project: building a decision table60 min · 1 exercise
- 3. Functions: naming and reusing behaviour0/7 lessons · 6h · 8 exercises
Package behaviour behind a name someone else can call.
Builds on Making decisions, you can start here anyway, but that is the order it was written in.
- Declaring and calling your first function45 min · 1 exercise
- Parameters, arguments and defaults50 min · 1 exercise
- Return values and early return55 min · 1 exercise
- Function expressions and arrow functions50 min · 1 exercise
- Scope and shadowing55 min · 1 exercise
- Closures: functions that remember55 min · 2 exercises
- Pure functions and side effects50 min · 1 exercise
- 4. Structured data: arrays and objects0/7 lessons · 7h · 14 exercises
Hold many related values and reach into them safely.
Builds on Functions: naming and reusing behaviour, you can start here anyway, but that is the order it was written in.
- Arrays: many values under one name55 min · 2 exercises
- Changing a list: adding, removing, copying60 min · 2 exercises
- Objects: values with names instead of positions60 min · 2 exercises
- Shapes inside shapes60 min · 2 exercises
- Unpacking and rebuilding: destructuring and spread60 min · 2 exercises
- References: when two names mean one thing60 min · 2 exercises
- Reaching in safely: optional chaining and defaults65 min · 2 exercises
- 5. Iteration and array transformation0/7 lessons · 7h · 12 exercises
Turn one collection into another without writing the same loop twice.
Builds on Structured data: arrays and objects, you can start here anyway, but that is the order it was written in.
- Repeating work with for and while55 min · 2 exercises
- for...of and for...in: items and keys55 min · 2 exercises
- forEach, and when a plain loop is clearer55 min · 1 exercise
- map: one array in, a new array out60 min · 2 exercises
- filter, find, some and every: asking questions of a collection65 min · 2 exercises
- reduce: many values into one70 min · 2 exercises
- Project: chaining transformations into a pipeline60 min · 1 exercise
- 6. Strings and text processing0/6 lessons · 5h · 9 exercises
Take apart, clean up and rebuild text you did not write.
Builds on Iteration and array transformation, you can start here anyway, but that is the order it was written in.
- Strings cannot be changed, only rebuilt45 min · 1 exercise
- Building text out of values45 min · 1 exercise
- Finding things and cutting pieces out55 min · 2 exercises
- Splitting, joining and cleaning up55 min · 2 exercises
- Comparing text people actually typed50 min · 1 exercise
- Regular expressions: a first pass50 min · 2 exercises
- 7. Errors, validation, and defensive code0/6 lessons · 5h · 9 exercises
Decide what your code does when the input is wrong.
Builds on Functions: naming and reusing behaviour and Strings and text processing, you can start here anyway, but that is the order it was written in.
- What an error actually is45 min · 1 exercise
- Throwing, and the objects you throw50 min · 1 exercise
- try, catch, finally55 min · 2 exercises
- Validating input at the boundary55 min · 1 exercise
- Returning outcomes instead of throwing50 min · 2 exercises
- Failing loudly, not silently45 min · 2 exercises
- 8. Asynchronous JavaScript0/6 lessons · 6h · 2 exercises
Explain why some results arrive later, and write code that waits correctly.
Builds on Functions: naming and reusing behaviour and Errors, validation, and defensive code, you can start here anyway, but that is the order it was written in.
- Callbacks, and why they exist65 min · 2 exercises
Taught but not graded: the sandbox has no promise job draining, timers yet, and the lesson says so where it matters.
Taught but not graded: the sandbox has no promise job draining yet, and the lesson says so where it matters.
- async and await65 min
Taught but not graded: the sandbox has no promise job draining, top level await yet, and the lesson says so where it matters.
Taught but not graded: the sandbox has no promise job draining, timers yet, and the lesson says so where it matters.
- Async mistakes that bite55 min
Taught but not graded: the sandbox has no promise job draining, timers yet, and the lesson says so where it matters.
- 9. Modelling real data without a browser0/6 lessons · 6h · 7 exercises
Choose a shape for real data and change it without breaking it.
Builds on Structured data: arrays and objects and Iteration and array transformation and Strings and text processing, you can start here anyway, but that is the order it was written in.
- Choosing a shape for your data60 min · 1 exercise
- JSON: turning data into text and back60 min · 1 exercise
- Lookup tables: finding one thing quickly55 min · 1 exercise
- Map and Set: when a plain object is the wrong tool60 min · 1 exercise
- Changing data without breaking it60 min · 1 exercise
- Project: modelling an invoice65 min · 2 exercises
- 10. Modules, packages, and the toolchain0/6 lessons · 5h · 2 exercises
Read a real project's layout and understand what the tools do.
Builds on Functions: naming and reusing behaviour and Modelling real data without a browser, you can start here anyway, but that is the order it was written in.
- What a module is55 min · 1 exercise
- Named and default exports55 min · 1 exercise
Taught but not graded: the sandbox has no modules and host apis yet, and the lesson says so where it matters.
- Versions and lockfiles45 min
Taught but not graded: the sandbox has no modules and host apis yet, and the lesson says so where it matters.
Taught but not graded: the sandbox has no modules and host apis yet, and the lesson says so where it matters.
Taught but not graded: the sandbox has no modules and host apis yet, and the lesson says so where it matters.
- 11. Testing and debugging0/6 lessons · 5h · 8 exercises
Prove your code works and find out why when it does not.
Builds on Errors, validation, and defensive code and Modules, packages, and the toolchain, you can start here anyway, but that is the order it was written in.
- What a test actually is55 min · 2 exercises
- Arrange, act, assert50 min · 1 exercise
- Edge cases and boundaries55 min · 2 exercises
- Test doubles without a framework50 min · 1 exercise
- Debugging by bisection50 min · 2 exercises
- How this maps to Vitest40 min
Taught but not graded: the sandbox has no modules and host apis yet, and the lesson says so where it matters.
- 12. Capstone: build a small library end to end0/6 lessons · 8h · 6 exercises
Build, test and review a small library end to end against a brief.
Builds on Iteration and array transformation and Strings and text processing and Errors, validation, and defensive code and Modelling real data without a browser and Modules, packages, and the toolchain and Testing and debugging, you can start here anyway, but that is the order it was written in.
- Choosing the shape of a session90 min · 1 exercise
- The core functions, written test first100 min · 2 exercises
- Error paths: deciding what happens when the entry is wrong85 min · 2 exercises
- Refactoring: changing the shape without changing the answer80 min · 1 exercise
What this course is not. It does not certify anyone and it does not teach the browser, React or Node. The sandbox your code runs in has no page, no network and no files, and pretending otherwise would be the failure this course exists to avoid. The test harness is tamper-evident, not tamper-proof: the real boundary is the sandbox, and a learner who defeats the harness only fools themselves.