JSA™ – Certified Associate JavaScript Programmer certification is a professional credential that demonstrates the candidate’s proficiency in Object-Oriented Analysis, Design and Programming (OOA/OOD/OOP), as well as the more advanced use of functions in the JavaScript language.
The certification holder understands the Object-Oriented Programming approach to JavaScript (objects: literals, properties, dot and bracket notation, property existence tests, property enumeration; object features: references; methods, property/object configuration, prototypes; classes: design, declarations, properties, getters, setters, inheritance, static members, constructors), is skilled in the advanced use of built-in objects, including simple data types and their constructors, composite data types, and some of the most useful objects (JSON, Math, RegExp, extending built-in types), is proficient in using the mechanism of advanced functions in JavaScript, such as recursion, forwarding calls, decorators, functional programming, generators, iterators, and asynchronous programming, including callback functions and promises.
Moreover, the certified individual knows how to adopt the best programming practices, techniques, and conventions in JavaScript programs; thinks algorithmically, analyzes and models problems using an objective conceptual apparatus; understands the role and work of a programmer in the software development process, and knows how to use the most fundamental development tools.
JSA certified ensures that the individual is acquainted with the essential means provided by the JavaScript language to enable them to design, develop, deploy, refactor, and maintain JavaScript programs and applications; analyze and model real-life problems in Object-Oriented Programming categories; create and develop their own programming portfolio; and start their own studies at a professional level, and to continue their further professional development.
Use Set for unique collections: construct, add/has/delete/clear/size, iterate, and spread;
Use Map for key–value collections: construct, set/get/has/delete/clear/size, and iterate;
Model dictionaries with plain objects and iterate entries effectively;
Serialize and parse data with JSON.stringify and JSON.parse;
Perform calculations with Math (rounding, random, min/max, abs, pow, log, trig);
Use regular expressions via RegExp and string methods (test, exec, match, search, replace);
Extend built-in prototypes responsibly and understand the risks of doing so;
Handle parameters with defaults, rest, and spread; simulate named parameters with objects/destructuring;
Use closures and Immediately Invoked Function Expressions (IIFEs);
Control call context and forwarding with call, apply, and bind;
Compose decorators and higher-order functions; pass/return functions;
Create and consume generators; implement custom iterables and iterators;
Design asynchronous flows with callbacks and handle errors appropriately;
Create and chain promises; handle outcomes with then, catch, and finally;
Apply promise patterns such as Promise.all, Promise.any, and Promise.race;
Write async functions and manage control flow with await and try/catch;
Perform asynchronous network requests using XMLHttpRequest and the Fetch API;
JSA™ Certification Holder Profile
The holder of the JSA™ – Certified Associate JavaScript Programmer certification demonstrates the following skills and expertise:
knows the syntax of the core JavaScript language to a degree that allows them to work with variables, operators, flow control, and functions;
knows the basics of the JavaScript data types system, distinguishing between primitive and complex types, and is able to choose a type adequate to their needs;
thinks algorithmically and can analyze a problem using a programmatic conceptual apparatus;
can choose a data type adequate to the problem being solved, and use suitable flow control means;
can design, develop, and improve very simple JavaScript programs;
can interpret and handle basic exceptions related to errors in program execution;
understands a programmer's work in the software development process and the role of fundamental development tools;
knows how a program is interpreted and executed in an actual computer environment, local or remote;
can create and develop their own programming portfolio.