View Schedule & Book More dates available

Next up:


Want to upgrade your JavaScript skills and learn how to design, create and maintain rich web applications with JavaScript? Join Damjan Vujnovic for this Advanced JavaScript course and learn how to take full advantage of JavaScript's functional and dynamic nature, by writing clean, well-structured, object-oriented and unit-tested JavaScript code, applying asynchronous and event-driven patterns, best practices and a deeper understanding of lexical scope and closure,

As Douglas Crockford once said, JavaScript is the world's most misunderstood programming language. It is also one of the world's most popular programming languages and the cornerstone of modern web application development.

With web clients becoming thicker, more complex, and increasingly business critical, it is becoming more important to create rich web applications that are powerful, flexible and maintainable.

Join Damjan Vujnovic for this Advanced JavaScript course, and learn how to write your own object-oriented code, how to apply asynchronous and event-driven patterns and how to use behaviours whilst staying unobtrusive. Through a combination of lectures and practical exercises, you will also gain an understanding of lexical scope and closure, and how to unit-test your code avoiding common pitfalls. Upon completion of this Advanced JavaScript course, you will know how to design and create maintainable and rich web applications that are ready for production.

Learn how to:

  • Take advantage of JavaScript's functional and dynamic nature, using modern language features
  • Understand lexical scope and closure
  • Write clean, well-structured, object-oriented code
  • Apply best practices to avoid quirks and common pitfalls
  • Apply asynchronous and event-driven patterns
  • Unit test JavaScript code

What the community says

"Strong, thorough and very straight forward. Managed to describe the problems and solutions very clearly."

Emma, UKTV

"Very good, learnt a lot! Lots of exercises, content and free materials."

Alexander, IBM

"Phenomenally knowledgeable."

Joseph, IBM

"Excellent format to the course. Very engaging and learning about TDD (principles and framework) as we want was fantastic!"

Mark Howard, IBM

"Really enjoyed the test-based learning, good way to teach!"

James Topham, IBM

About the Author

Damjan Vujnovic

With over a decade of experience working on domains within a variety of industries – including financial, government and social – Damian Vujnovic is a strong authority on simplifying development processes to create robust software applications.


Introduction to unit testing (Jest)


  • object literal
  • default & guard operators
  • updating properties & property attributes
  • property enumeration
  • removing properties


  • declaration hoisting
  • function literal
  • arguments
  • invocation patterns and this
  • return
  • prototype


  • array literals
  • length & delete
  • for vs. for in
  • arrays vs. associative arrays
  • filter/map/reduce & co


  • lexical scope
  • closure
  • revealing module pattern
  • bind

Unit testing asynchronous code


  • constructor and factory functions- classes- inheritance
  • mixins


  • const & let- template strings- object literals- default parameters- fat-arrow functions- destructuring objects and arrays- spread & rest operator

Asynchronous programming patterns

  • callbacks
  • promises
  • observable

Functions, part three

  • are first-class- currying and partial application
This workshop is a combination of lectures, discussions and practical exercises.



If you are an experienced Web Developer designing, creating and maintaining rich web applications, keen to tackle the complexity and challenges of modern Web Development, this is the Advanced Javascript course for you!


This is an advanced JavaScript course: To benefit from this course, you should have some prior hands-on experience using JavaScript and be familiar with HTML, DOM, CSS and Ajax.

Prior exposure to a JavaScript/Ajax framework (like JQuery which is used in a few exercises) will be helpful but is not essential.

Bring your own hardware

To participate in this course you are required to bring your own laptop with the following installed: - Git client - NodeJS 10 - A modern browser - Visual Studio Code (or any other text-editor/IDE)

If you are unable to bring your own laptop and you let us know at least 2 weeks prior to your attendance of this course, our team will be able to provide you with a laptop pre-installed with the above environment.