Programming & Development

JavaScript

Learn JavaScript to build interactive websites and modern web applications, from DOM basics to async programming.

Level: Beginner–Advanced Beginner: 4 weeks • Intermediate: 8 weeks • Advanced: 12 weeks Contact for pricing

Prerequisites

No prior experience required — open to beginners.

Certificate

Awarded by Rescue Academy on successful completion of the program's assessments and final project.

Learn Online — Live Classes

Register, receive your schedule, and join live instructor-led JavaScript classes on Zoom. Assignments, instructor feedback, and a certificate on completion.

Learn In Person

Attend JavaScript classes in person in Juba with hands-on labs, instructor mentorship, and a certificate on completion.

What You'll Learn

  • Variables, types, conditions, loops and functions
  • Arrays, objects, array methods and JSON
  • The DOM, events and interactive pages
  • Modules, classes and asynchronous JavaScript (promises, async/await)
  • Fetching APIs, browser storage and robust forms
  • Testing, Node.js tools and APIs, and TypeScript
  • Performance, security and accessibility of JavaScript applications

Program Objectives

  • Write correct, modern JavaScript for the browser and Node.js
  • Build interactive, data-driven interfaces without depending on a framework
  • Handle asynchronous operations, APIs and offline conditions reliably
  • Test, type-check and debug JavaScript code professionally
  • Deliver applications that are fast, secure and accessible

Who It's For

  • Beginners who want to program for the web
  • Web designers who want to add interactivity to their pages
  • Developers preparing for front-end, full-stack or Node.js roles

Where You'll Use It

  • Interactive websites and web applications
  • Offline-capable tools for field work and data collection
  • Command-line tools and back-end APIs with Node.js

Curriculum

Instructor-led, practical training. Each level is a block of 4, 8 or 12 weeks; every module ends with a practical activity and an assessment, and every level with a project.

Beginner

4 weeks · 52 guided hours · 5 modules Free taster lessons available Level overview

Module 1: JavaScript Setup and Basics 10 h

Run JavaScript in the browser and with Node.js, use the console, and work with variables, types, operators and strings. 3 lessons

Module 2: Logic and Functions in JavaScript 11 h

Make decisions with conditions, repeat work with loops, and organise code into functions, including arrow functions. 3 lessons

Module 3: Arrays, Objects and Array Methods 10 h

Store collections in arrays and records in objects, transform data with map, filter and reduce, and read and write JSON. 3 lessons

Module 4: The DOM and Events 11 h

Use JavaScript to read and change web pages, respond to clicks and form input, and build page content from data. 3 lessons

Module 5: Interactive Page Project 10 h

Plan, build and debug the Market Price Board using everything from the Beginner level. 3 lessons

Level project: Market Price Board

Intermediate

8 weeks · 90 guided hours · 6 modules Level overview

Module 1: Modern JavaScript Syntax and Modules 15 h

Write concise modern JavaScript with spread, rest, optional chaining and classes, and organise code into ES modules. 3 lessons

Module 2: Asynchronous JavaScript 16 h

Understand the event loop and write asynchronous code with callbacks, promises and async/await, handling errors correctly. 3 lessons

Module 3: Fetch, APIs and JSON in the Browser 16 h

Request data from web APIs with fetch, send data, check responses and handle every state the user can see: loading, empty, error and offline. 3 lessons

Module 4: Browser Storage and Robust Forms 13 h

Persist data in the browser with Web Storage and IndexedDB, and build forms that validate input accessibly. 3 lessons

Module 5: Debugging and Code Quality in JavaScript 13 h

Debug efficiently with DevTools, keep code consistent with ESLint and Prettier, and handle errors with clear custom error types. 3 lessons

Module 6: Intermediate JavaScript Project 17 h

Build the offline-friendly exchange rate and budget app with modules, asynchronous code, storage and quality tooling. 3 lessons

Level project: Offline-Friendly Exchange Rate and Budget App

Advanced

12 weeks · 140 guided hours · 6 modules Level overview

Module 1: Testing JavaScript 22 h

Write unit, asynchronous and DOM tests, use test doubles wisely and practise test-driven development. 4 lessons

Module 2: Node.js for Tools and Servers 24 h

Use Node.js to work with files, build command-line tools and write a small HTTP API with validation. 4 lessons

Module 3: Application Architecture without a Framework 20 h

Structure larger front-end applications with clear modules, central state, events and client-side routing — the ideas behind every framework. 4 lessons

Module 4: TypeScript Essentials 22 h

Add static types to JavaScript with TypeScript to catch mistakes early and make larger codebases easier to change. 4 lessons

Module 5: Performance, Security and Accessibility in JavaScript 22 h

Measure and improve performance on low-end devices, protect users from cross-site scripting and other attacks, and make dynamic interfaces accessible. 4 lessons

Module 6: JavaScript Capstone Project 30 h

Design, build, test and present the Community Health Worker Visit Tracker as a professional TypeScript application with a Node.js API. 5 lessons

Level project: Community Health Worker Visit Tracker

Final practical project

Community Health Worker Visit Tracker

An offline-capable TypeScript web app with a Node.js API that records household visits, syncs them without duplicates when a connection returns and summarises visits per area.

Deliverables

  • Source code in a Git repository with a README and user guide
  • Offline front end with accessible forms and sync status
  • Node.js API with validation and idempotent sync
  • Automated tests, a type-check script and an audit report

Assessed on

  • Visits recorded offline sync once, without duplicates
  • Input is validated on client and server and rendered safely
  • The app is keyboard-accessible and fast on a throttled mobile profile
  • Tests and the type checker pass from a clean checkout

Worked Examples

A selection of the visual, practical examples used in this program's lessons — each teaches a different skill.

Free Course: JavaScript Starter

A free introduction to JavaScript in the browser: variables and functions, arrays and objects, and making a page respond to clicks and input. Free, self-study, about 6 hours — no certificate. The full program above is taught live by an instructor, with practical assignments, assessments and a certificate.

  1. 1Free lesson 1JavaScript Fundamentals & Setup
  2. 2Free lesson 2Control Flow & Functions
  3. 3Free lesson 3Arrays & Objects
  4. 4Free lesson 4The DOM & Events
  5. 5Free lesson 5Problem Solving with JavaScript
  6. Final checkQuick Quiz — JavaScript Basics
Open the free course

Tools & Technologies

Primary Tools

  • A modern web browser with DevTools — Running, inspecting and debugging JavaScript in web pages Practice: Console, Elements, Sources, Network and Performance panels
  • Visual Studio Code — The code editor used throughout the program Practice: Editing, refactoring and running code
  • Node.js and npm — Running JavaScript outside the browser and managing tools and packages Practice: Scripts, command-line tools, servers and package management

Supporting Tools

  • ESLint and Prettier — Catching likely bugs and formatting code consistently Practice: Configuring and following a lint setup
  • Node's test runner (node:test) or Vitest — Automated unit, async and DOM tests Practice: Writing and running tests
  • Git — Version control for every project Practice: Committing, branching and sharing code

Professional / Industry Tools

  • TypeScript — Static type checking introduced at Advanced level Practice: Typing data, narrowing and migrating JavaScript
  • Lighthouse — Measuring performance and accessibility Practice: Auditing and improving web applications

Career Opportunities

  • Junior front-end / web developer
  • Freelance website developer for local businesses
  • Foundation for full-stack or Node.js backend development
  • IT/web role in a company, NGO, or government office

Practical Projects

  • Build an interactive web page that fetches real data from a public API and updates the DOM
  • Build a small Node.js command-line tool that processes a local data file
  • Refactor a sequence of nested callbacks into async/await, and confirm the behavior is identical before and after

Problem-Solving Focus

Problem: A page's data appears empty or undefined even though an API call was clearly made

Approach: Recognize this as an async timing issue — the code ran before the fetch actually resolved — and use async/await or .then() properly to wait for the real data before using it.

Problem: A variable's value seems to change unexpectedly from a place in the code that shouldn't have touched it

Approach: Check whether the variable was declared with var (function-scoped, easy to misuse) instead of let/const (block-scoped), and prefer let/const to avoid this entire category of bug.

Problem: Deeply nested callbacks make a sequence of asynchronous steps almost unreadable and hard to debug

Approach: Refactor the sequence using Promises or async/await to express the same steps in a flat, readable order instead of nested "callback hell."

Problem: A web page updates the DOM correctly, but performance degrades noticeably as more elements are added

Approach: Minimize unnecessary DOM manipulation — batch updates, avoid re-querying the DOM in a loop — and use browser DevTools' performance tools to find the actual bottleneck.