This guide extends the core bootcamp pathway with optional JavaScript topics you can study after finishing:
Core bootcamp scope remains Class 1 + Class 2 + mini project. This roadmap is for deeper mastery and interview preparation.
Why now:
- Loops are required for algorithmic thinking and interviews, even when array methods are preferred in product code.
Prerequisites:
Learning objectives:
- Explain when to use
for,while,for...of, andfor...in. - Control loop flow with
breakandcontinue. - Convert between loop-based and array-method solutions.
Practice exercises:
- Implement FizzBuzz from 1 to 100.
- Reverse a string and count character frequency using loops only.
Resources:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Loops_and_iteration
- https://javascript.info/while-for
Why now:
- Understanding direct DOM APIs improves debugging and helps when building non-React scripts.
Prerequisites:
Learning objectives:
- Select and update elements with
querySelector,textContent, andclassList. - Add and remove event listeners correctly.
- Create and remove dynamic elements safely.
Practice exercises:
- Build a basic to-do list with add/delete actions.
- Add an interactive counter with increment/decrement/reset buttons.
Resources:
- https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction
- https://javascript.info/dom-nodes
Why now:
- These methods cover common transformations used in analytics, reporting, and interview tasks.
Prerequisites:
Learning objectives:
- Aggregate values and objects with
reduce. - Sort primitives and objects with stable comparator logic.
- Use
some/everyto express validation rules.
Practice exercises:
- Compute totals and averages from a purchases array.
- Sort users by city then by name with deterministic output.
Resources:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
Why now:
- Better debugging reduces wasted time and improves confidence during project work.
Prerequisites:
Learning objectives:
- Use browser DevTools Console, Sources, and Network tabs effectively.
- Trace async errors and failed fetch calls.
- Create repeatable debugging checklists for UI and data issues.
Practice exercises:
- Diagnose and fix a deliberate API URL typo in starter files.
- Add targeted logs and remove them after fixing a filtering bug.
Resources:
- https://developer.chrome.com/docs/devtools/
- https://developer.mozilla.org/en-US/docs/Learn/Common_questions/Tools_and_setup/What_are_browser_developer_tools
Why now:
- Closures are foundational for factory functions, callbacks, memoization, and module patterns.
Prerequisites:
Learning objectives:
- Explain lexical scope and closure behavior.
- Implement private state via function factories.
- Avoid stale closure bugs in async/event code.
Practice exercises:
- Build a
createCounterfunction with increment/decrement/get methods. - Build a simple memoized function for repeated calculations.
Resources:
Why now:
- Misunderstanding
thiscauses subtle bugs in object methods and callbacks.
Prerequisites:
Learning objectives:
- Distinguish
thisbehavior in regular functions vs arrow functions. - Control context with
call,apply, andbind. - Prevent context loss in callbacks and event handlers.
Practice exercises:
- Fix a broken object method that logs
undefinedfields. - Refactor callback-based code to preserve context safely.
Resources:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
- https://javascript.info/object-methods
Why now:
- Classes help model entities when a project needs clearer state and behavior boundaries.
Prerequisites:
Learning objectives:
- Create classes with constructors and instance methods.
- Apply inheritance for shared behavior.
- Choose between plain objects/functions and classes pragmatically.
Practice exercises:
- Implement
UserandAdminUserclasses with shared base behavior. - Convert a utility object into a class and compare readability.
Resources:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes
- https://javascript.info/class
Why now:
- Production-ready apps need categorized errors, clean messages, and recovery paths.
Prerequisites:
Learning objectives:
- Differentiate operational vs programmer errors.
- Create custom error classes with useful metadata.
- Build graceful fallbacks for network and parsing failures.
Practice exercises:
- Add retry-with-limit logic to a fetch wrapper.
- Implement custom
ApiErrorwith status code and user-friendly mapping.
Resources:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch
- https://javascript.info/custom-errors
Why now:
- Prototype knowledge explains how JavaScript objects and classes work under the hood.
Prerequisites:
Learning objectives:
- Describe prototype chains and property lookup.
- Inspect and modify prototypes responsibly.
- Connect
classsyntax to prototype behavior.
Practice exercises:
- Recreate simple class behavior using constructor functions and prototypes.
- Inspect prototype chains of arrays, functions, and custom objects.
Resources:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain
- https://javascript.info/prototype-inheritance
Why now:
- Event loop literacy is essential for reasoning about async timing and UI responsiveness.
Prerequisites:
Learning objectives:
- Explain call stack, microtasks, and macrotasks.
- Predict execution order of async snippets.
- Reduce race conditions in UI state updates.
Practice exercises:
- Predict and verify output order for
setTimeout,Promise, andawait. - Simulate concurrent requests and guard against stale responses.
Resources:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Event_loop
- https://javascript.info/event-loop
Why now:
- Iteration protocols help with custom data streams and lazy processing.
Prerequisites:
Learning objectives:
- Implement iterable objects with
[Symbol.iterator]. - Write generator functions with
yield. - Use generators for lazy sequence creation.
Practice exercises:
- Build a range generator that yields configurable sequences.
- Create an iterable object that exposes paginated items.
Resources:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators
- https://javascript.info/generators
Why now:
- Patterns improve maintainability once codebases grow beyond small scripts.
Prerequisites:
Learning objectives:
- Apply module, factory, and observer patterns in JS.
- Identify when a pattern is over-engineering.
- Refactor duplicated logic into reusable abstractions.
Practice exercises:
- Refactor API logic into a module/factory with clear boundaries.
- Implement a lightweight pub/sub utility for UI events.
Resources:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model
- https://www.patterns.dev/posts/classic-design-patterns/
- Core docs and references:
- Problem practice:
- Interview-style drills:
- Habit Tracker (DOM, events, local storage, sorting)
- Expense Analyzer (reduce, grouping, filtering, error handling)
- Movie Search Dashboard (async fetch, debouncing, rendering states)
- Kanban Lite Board (drag/drop basics, object modeling, persistence)
- API Retry Playground (custom errors, retry/backoff, logging)
Week 1:
- Loops + More Array Methods
- Goal: Solve 8-10 short algorithm tasks
Week 2:
- DOM Manipulation + Debugging Techniques
- Goal: Ship one vanilla JS mini-app
Week 3:
- Closures +
this - Goal: Build 3 closure/context exercises
Week 4:
- Classes and OOP + Advanced Error Handling
- Goal: Refactor one existing script with class or factory boundaries
Week 5:
- Prototypes and inheritance internals
- Goal: Recreate class behavior with prototypes
Week 6:
- Event loop and async concurrency behavior
- Goal: Complete 6 output-order and race-condition drills
Week 7:
- Generators/iterators + design patterns intro
- Goal: Build one iterable utility and one pattern-based refactor
Week 8:
- Capstone practice week
- Build one project idea end-to-end, then run self-review against:
- naming clarity
- error handling
- state flow
- modularity
- documentation quality