Ruiwakngqtlznnfklc8s
3 DAY COURSE

Damjan Vujnovic's Advanced JavaScript Workshop

Topics covered at ADV-JAVASCRIPT-01-03
View Schedule & Book More dates available

Next up:

Would you like to learn how to write great JavaScript code? Keen to learn how to employ JavaScript's fantastic features and avoid its pitfalls? Join Damjan Vujnovic for this Advanced JavaScript course and gain the skills to design, create and maintain rich web applications with JavaScript.

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.

In this course, we'll learn how to take advantage of JavaScript's functional and dynamic nature. You will gain an understanding of lexical scope and closure and you'll learn how to write your own object-oriented code, to apply asynchronous and event-driven patterns, and to use behaviours and stay unobtrusive.

Finally, you'll learn how to unit-test your code and how to avoid common pitfalls.

Learn how to:

  • Take advantage of JavaScript's functional and dynamic nature
  • Understand lexical scope and closure
  • Unit test JavaScript code
  • Write object-oriented code
  • Avoid (some) JavaScript quirks and common pitfalls
  • Apply asynchronous and event-driven patterns
  • Use behaviors and stay unobtrusive

What the community says

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

Alexander Sahin, IBM on 29th Jan 2018

"Phenomenally knowledgeable."

Joseph Brady, IBM on 29th Jan 2018

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

James Topham, IBM on 24th Apr 2017

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

Mark Howard, IBM on 24th Apr 2017

"Incredibly wide ranging and detailed course - structured in a fantastic way. Really demonstrates the value and power of TDD. Highly recommended to anyone thinking of taking it."

Django Shelton, IBM on 22nd Mar 2017

About the Author

Damjan Vujnovic

It all started at the age of 12, when the secrets of C=64 machine language ignited the passion for computer programming. Today, after more than 10 years of professional experience, the sheer excitement and pride of making a new technology "work" is still driving Damjan Vujnovic every day.

Introduction to unit testing (Jasmine)

JSLint (will hurt your feelings)

Objects

  • object literals
  • default & guard operators
  • updating properties & property attributes (eval/firebug gotcha)
  • prototype
  • property enumeration
  • delete operator

Functions

  • function object
  • declaration hoisting
  • literal
  • arguments
  • invocation (4 ways)
  • return
  • recursion

Arrays

  • array literals
  • length & delete
  • for vs. for in
  • arrays vs. associative arrays
  • augmenting array prototype
  • multidimensional arrays

Functions

  • lexical scope
  • closure
  • revealing module pattern
  • bind
  • Global namespace pollution detection

Unit testing asynchronous code

OOP

  • inheritance (pseudoclassical, prototypal, functional)
  • mixins
  • overriding & super()

Asynchronous programming patterns

  • callback (asynchronous method)
  • promise/future (deferrable value)
  • observable

Functions

  • a few functional programming patterns (chaining, curry, memorization)
  • throttling
  • funneling

Advanced unit testing

  • test doubles (stubs, mocks, fake objects)
  • dom
  • tools

How does this all fit together (a component based micro-architecture featuring IOC, services & behaviours) - a small primer

Audience

If you are an experienced Web Developer and you want to learn how to design, create and maintain complex and modern rich web appiclations in JavaScript, this is the course for you!

Prerequisites

This is an advanced JavaScript course: To benefit from this course, you should have some 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 so you can develop with your own tools and languages.

Overview

Would you like to learn how to write great JavaScript code? Keen to learn how to employ JavaScript's fantastic features and avoid its pitfalls? Join Damjan Vujnovic for this Advanced JavaScript course and gain the skills to design, create and maintain rich web applications with JavaScript.

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.

In this course, we'll learn how to take advantage of JavaScript's functional and dynamic nature. You will gain an understanding of lexical scope and closure and you'll learn how to write your own object-oriented code, to apply asynchronous and event-driven patterns, and to use behaviours and stay unobtrusive.

Finally, you'll learn how to unit-test your code and how to avoid common pitfalls.

Learn how to:

  • Take advantage of JavaScript's functional and dynamic nature
  • Understand lexical scope and closure
  • Unit test JavaScript code
  • Write object-oriented code
  • Avoid (some) JavaScript quirks and common pitfalls
  • Apply asynchronous and event-driven patterns
  • Use behaviors and stay unobtrusive

What the community says

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

Alexander Sahin, IBM on 29th Jan 2018

"Phenomenally knowledgeable."

Joseph Brady, IBM on 29th Jan 2018

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

James Topham, IBM on 24th Apr 2017

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

Mark Howard, IBM on 24th Apr 2017

"Incredibly wide ranging and detailed course - structured in a fantastic way. Really demonstrates the value and power of TDD. Highly recommended to anyone thinking of taking it."

Django Shelton, IBM on 22nd Mar 2017

About the Author

Damjan Vujnovic

It all started at the age of 12, when the secrets of C=64 machine language ignited the passion for computer programming. Today, after more than 10 years of professional experience, the sheer excitement and pride of making a new technology "work" is still driving Damjan Vujnovic every day.

Program

Introduction to unit testing (Jasmine)

JSLint (will hurt your feelings)

Objects

  • object literals
  • default & guard operators
  • updating properties & property attributes (eval/firebug gotcha)
  • prototype
  • property enumeration
  • delete operator

Functions

  • function object
  • declaration hoisting
  • literal
  • arguments
  • invocation (4 ways)
  • return
  • recursion

Arrays

  • array literals
  • length & delete
  • for vs. for in
  • arrays vs. associative arrays
  • augmenting array prototype
  • multidimensional arrays

Functions

  • lexical scope
  • closure
  • revealing module pattern
  • bind
  • Global namespace pollution detection

Unit testing asynchronous code

OOP

  • inheritance (pseudoclassical, prototypal, functional)
  • mixins
  • overriding & super()

Asynchronous programming patterns

  • callback (asynchronous method)
  • promise/future (deferrable value)
  • observable

Functions

  • a few functional programming patterns (chaining, curry, memorization)
  • throttling
  • funneling

Advanced unit testing

  • test doubles (stubs, mocks, fake objects)
  • dom
  • tools

How does this all fit together (a component based micro-architecture featuring IOC, services & behaviours) - a small primer

Audience

Audience

If you are an experienced Web Developer and you want to learn how to design, create and maintain complex and modern rich web appiclations in JavaScript, this is the course for you!

Prerequisites

This is an advanced JavaScript course: To benefit from this course, you should have some 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 so you can develop with your own tools and languages.