JavaScript Programming
Master the language of the web — 50 lessons from first script to advanced architecture.
Sign in to track your progress through this course
👋 New to JavaScript? No experience needed.
Start with Lesson 1 and learn to build interactive websites step by step — at your own pace.
Beginner Track
✦ Start Here ~2–3 hoursLearn how JavaScript works and write your first interactive programs — no prior coding experience needed.
Introduction to JavaScript
How JavaScript works in the browser and what you can build with it
Variables and Data Types
var, let, const — how to store and update data in your programs
Functions
Write reusable blocks of code that do one thing well
DOM Manipulation
Select and change HTML elements directly from JavaScript
Events
Respond to user clicks, keypresses, and form submissions
Intermediate Track
~3–4 hoursWork with data structures, write asynchronous code, and fetch data from real APIs.
Arrays and Objects
Store lists and structured data, and loop through them efficiently
ES6+ Features
Arrow functions, destructuring, template literals, and modern JS syntax
Async/Await
Write asynchronous code that's as readable as synchronous code
Fetch API
Load data from external APIs and display it on your page
Error Handling
Catch and handle errors with try/catch and graceful fallbacks
Expert Track
~3–4 hoursGo deeper into closures, classes, design patterns, and performance — the hallmarks of a skilled JS developer.
Closures and Scope
Understand how functions remember variables from their outer scope
Prototypes and Classes
Model real-world objects with JS classes and prototype inheritance
Design Patterns
Apply classic patterns like Module, Observer, and Factory in JavaScript
Performance Optimization
Profile and speed up JavaScript with proven optimisation techniques
Advanced Track
~12–16 hoursJavaScript internals, architecture, security, testing, and deployment for engineers who want to master the language completely.
Deep Dive into JavaScript Execution Context & Call Stack
How JS engines execute code, create frames, and manage the call stack
Advanced Scope, Closures & Lexical Environments
The full picture of scope chains, variable hoisting, and closure patterns
Event Loop, Microtasks & Async Internals
How the event loop, task queue, and microtask queue work together
Mastering Promises: Chaining, Error Flow & Patterns
Chain promises, handle errors correctly, and use Promise.all/race
Async/Await Architecture & Best Practices
Patterns for concurrent requests, cancellation, and error recovery
JavaScript Modules: ES6 Imports, Exports, Bundling
Split code into modules and understand how bundlers resolve imports
Prototype Chain & Advanced OOP Patterns
Traverse the prototype chain and build mixins and composable objects
Functional Programming in JavaScript
Write composable, predictable code with pure functions and immutability
Higher-Order Functions & Currying
Pass, return, and partially apply functions to build powerful abstractions
Pure Functions, Immutability & Side Effects
Write predictable code by controlling side effects and avoiding mutation
JavaScript Memory Management & Garbage Collection
How V8 allocates and collects memory, and how to avoid leaks
Deep Copy vs Shallow Copy & Data Structures
Clone objects safely and choose the right data structure for the job
Advanced Array & Object Transformations
Master reduce, flat, flatMap, Object.entries, and complex transforms
Custom Event Emitters & Observer Pattern
Build your own event system and implement the observer pattern from scratch
Debouncing & Throttling for Performance
Limit how often event handlers fire to keep UIs fast and responsive
DOM Reflow, Repaint & Browser Rendering Pipeline
How the browser converts HTML to pixels and how JS triggers reflows
Virtual DOM Concepts & Efficient UI Updates
How frameworks like React use a virtual DOM to minimise real DOM changes
Advanced Fetch API Patterns (Retry, Timeout, AbortController)
Handle timeouts, retries, and cancellation in production-grade fetch code
Web Storage APIs (localStorage, sessionStorage, IndexedDB)
Persist data in the browser across sessions using storage APIs
Building Custom APIs with Fetch & Async Logic
Design reusable API modules with auth, caching, and error handling built in
Error Handling Patterns in Large JS Apps
Centralise error handling with boundaries, loggers, and fallback strategies
Regular Expressions Advanced Techniques
Master lookaheads, named groups, and real-world regex patterns
Working with Dates, Timezones & Intl API
Parse, format, and localise dates correctly across timezones
JavaScript Design Patterns (Factory, Singleton, Strategy, etc.)
Apply advanced GoF patterns and architectural patterns to real JS apps
Writing Maintainable & Scalable Code Architecture
Structure large codebases with clear boundaries, naming, and conventions
Deep Dive into JSON, Parsing & Serialization
Parse, validate, transform, and safely serialise complex JSON data
Client-Side Security Essentials (XSS, CSRF, Sanitisation)
Prevent the most common web security vulnerabilities in JS apps
Working with WebSockets for Real-Time Features
Build live chat, notifications, and dashboards with WebSocket connections
JavaScript Performance Optimization Techniques
Identify and fix slow JS with profiling, lazy loading, and code splitting
Building Reusable UI Components with Pure JS
Create modular, accessible components without a framework
Module Bundlers: Webpack, Parcel, Vite (Overview)
Understand how bundlers work and configure them for your project
Intro to TypeScript & Strong Typing Concepts
Add static types to JavaScript with TypeScript and avoid runtime bugs
Testing JavaScript with Jest & Mocha
Write unit tests, mocks, and assertions with Jest and Mocha
Building Simple SPAs with Vanilla JavaScript
Build a single-page application with client-side routing and state
Deploying JavaScript Apps (CDN, Minification, Bundling)
Optimise and ship JavaScript apps to production with confidence
Final Project Ideas
Guided project ideas to consolidate everything you've learned