Programming & Development
JavaScript
Learn JavaScript to build interactive websites and modern web applications, from DOM basics to async programming.
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.
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
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
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.
- Code example Finding the big sales with map, filter and reduce Add a total to each sale, keep the large ones and add up their revenue — three array methods, no hand-written counting loop. Beginner · Module 3 · Lesson 2
- Code example In which order does this print? Synchronous code, an async function, a promise and a timer — and the order the event loop runs them in. Intermediate · Module 2 · Lesson 1
- Troubleshooting tree Why didn't my fetch work? A troubleshooting path for the most common reasons a request fails or returns something unexpected. Intermediate · Module 3 · Lesson 3
- Code example Summarising a CSV file with Node.js Read school fee payments from a CSV file, total them per student and report bad lines with their line numbers. Advanced · Module 2 · Lesson 2
- Step-by-step Rendering a visitor's comment safely The steps that stop a comment like <img src=x onerror=…> from running as code in other users' browsers. Advanced · Module 5 · Lesson 3
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.
- 1Free lesson 1JavaScript Fundamentals & Setup
- 2Free lesson 2Control Flow & Functions
- 3Free lesson 3Arrays & Objects
- 4Free lesson 4The DOM & Events
- 5Free lesson 5Problem Solving with JavaScript
- Final checkQuick Quiz — JavaScript Basics
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.
Ready to register for JavaScript?
Register — Learn Online Register — Learn In Person WhatsApp: +211926196668 Email: rescueacademy26@gmail.com