Advanced Programming in Javascript

The workshop focuses on modern JavaScript standards and techniques that allow writing efficient, readable, and balanced code. Participants will analyze advanced aspects of working with functions, classes, modules, and asynchronicity, as well as learn patterns and anti-patterns used in everyday programming work. During practical exercises, we will discuss code optimization techniques, debugging difficult cases, and ways to build modular architecture. After the training, participants will be able to consciously use the full potential of modern JavaScript in projects of various scales.

Training program

Secure and Efficient JavaScript Programming

  1. JavaScript language specification and standards
  2. Correct and efficient script loading strategies
  3. Debugging code in the browser
  4. Working in strict mode
  5. Proper declaration and usage of variables and constants
  6. Comparison operations and safe type coercion
  7. Functions, closures, and their practical applications
  8. Execution context, variable scope, and the role of `this`
  9. Object-oriented programming using the prototype-based model
  10. Mix-ins as an alternative to classical inheritance
  11. Exception handling

Modern JavaScript (ES6/ES2015 and beyond)

  1. Code transpilation and cross-browser compatibility
  2. Arrow functions
  3. Function parameters (default values, spread, rest parameters)
  4. Template literals and string interpolation
  5. OOP: class declarations, class members, computed properties, inheritance, static members, getters/setters, access control
  6. Destructuring (objects, arrays, function parameters)
  7. Nullish coalescing
  8. Working with modules
  9. Symbols
  10. Generators and iterators
  11. Collections (Map, Set, WeakMap, WeakSet)
  12. Summary of major ECMAScript features and upcoming changes

Asynchronous Programming

  1. Callbacks
  2. Promises
  3. Async/await
  4. Introduction to RxJS

Functional Programming

  1. Pure functions
  2. Immutability
  3. Referential transparency
  4. Recursion
  5. Higher-order functions
  6. Pattern matching
  7. Function composition, currying, and partial application
  8. Memoization
  9. Algebraic Data Types (ADTs)
  10. Introduction to type class concepts: Functors, Applicatives, Monads, Traversables
  11. Practical use of common monads: Maybe, Either, Validation, Reader
  12. Side effects and interacting with the external environment