Course in JavaScript

Course in JavaScript programming, for both client and server side

In this practically oriented course we direct us to you that need to quickly get productive and udnerstand how to program in JavaScript in an effective way.

We focuses solely on the so called good parts of the language and points out pit-falls you nedd to avoid. Above all else we demystifies the object concept in JavaScript, which is essentially different from how it works in languages such as Java.

This is what you will learn
  • Understand the object model (prototypes)
  • Understand how to use lambda expressions
  • Understand its type system
  • Avoid common pit-falls
  • Being able top use ES2015 and later versions
  • Being able to understand and program asynchroous programs, based on call-backs, promises or async functions
  • Being able to implement and execute unit tests
Course Contents

Background and Overview

  • History
  • Brendan Eich
  • Why the name JavaScript, when it's not Java
  • What is ECMAscript and ES*
  • Upcoming releases
  • NodeJS adn Ryan Dahl
  • Brief about NodeJS
  • Using NPM
  • How to run JavaScript from the command line
  • How to run JavaScript in a browser
  • Installation of NodeJS and NPM

Basic Syntax

  • Program structure
  • Expressions and statements
  • Variables
  • Operators
  • Literals
  • Control structures
  • Syntactic pitfalls
  • Boolean values
  • Falsy and truthy
  • Numbers
  • Text strings
  • Regex
  • Array
  • Objects
  • The typeof operator
  • Type conversion rules for operator ==
  • Why it is better to always use operator ===
  • Type conversion pitfalls


  • Function statement
  • Function invocation
  • Parameter passing
  • Recursive functions
  • Function reference
  • Function expressions
  • Lambda expressions (aka fat arrows)
  • Scope rules
  • Free variables
  • Immediately invoked function expression (IIFE)
  • The module pattern

Understanding the Object Model

  • The prototype model
  • Class-like objects
  • Using new
  • Understanding this
  • Properties
  • Methods
  • Inheritance

Text Functions

  • Selector functions
  • Creator functions
  • Search related functions
  • Regex
  • Regex using functions

Array Functions

  • Basic array functions
  • Update functions
  • Sort and search related functions
  • Array pipeline stream expressions
  • Using filter, map and reduce

Date Functions

  • Date constructors and factory methods
  • Acceptable formats for parsing
  • Getters and setters

Misc. Functions

  • Post-poned execution using timeout
  • Periodic computation using interval timers
  • Math functions
  • URL encoding
  • Dynamic evaluation of JS expressions


  • What is JSON
  • JSON data types
  • Generting a JSON text string
  • Pretty printing
  • Using a properties replacer during JSON serialization
  • Generating a JSON expression based on a subset of properties
  • Parsing a JSON text string
  • Parsing with a properties replacer
  • Replacing the JSON result with a toJSON function
  • What is YaML
  • Benefits of using YaML for configuration files

JavaScript Execution Model

  • JavaScript engines
  • Understanding the call-stack and stack-frames
  • Invocation of asynchronous function blocks
  • The event-loop
  • A model for understanding how JS executes
  • Using Loupe to visualize JS execution

IIFE and Modules

  • What is an IIFE
  • How is IIFE working
  • What are the benefits of IIFE
  • Understanding the module pattern
  • Modules in JS


  • Features
  • Browser support
  • Default parameters
  • Multi-assignment
  • Spread operator
  • Set & Map data-structures
  • Lambda expressions
  • Classes
  • Getters & Setters
  • Inheritance
  • Modules
  • Iterators
  • Generators
  • Co-routines

Asynchronous Computation

  • What is async computation
  • Execution models
  • Using call-back functions
  • Limitations of the call-back model
  • Understanding promise objects
  • Promise syntax
  • Using promises to postpone computation
  • Assembling promise chains
  • Promise barrier
  • Handling of errors in promise chains
  • Understanding async functions
  • Creatting async functions
  • Waiting for promises using await

Understanding the DOM API

  • Browser API
  • What is the DOM
  • Node tree
  • Embedding and linking to JS code
  • Attributes of the script tag
  • Embedding and linking to CSS code
  • Attributes of the link tag
  • Finding elements/nodes in a DOM tree
  • Common DOM document properties
  • Some array-like properties and how to use them
  • Dealing with element/node content
  • Dealing with CSS styles
  • Structurally modifying a DOM tree

DOM Events

  • What is an event and an event handler
  • Different ways to register an event handler
  • Common event properties
  • Click events
  • Form events
  • Keyboard events
  • Common key event properties
  • Listening and reacting to key events
  • Mouse events
  • Listening and reacting to mouse events
  • Browser events
  • Understanding the event propagation model
  • Bubbling vs. capturing
  • How to create events and emit them

Understanding the BOM API

  • What is the BOM API
  • Using the window object
  • Using the lcoation object
  • Understanding browser storage
  • Using local and session storage
  • Storage operations

AJAX Fundamentals

  • Brief about the HTTP protocol
  • HTTP operations
  • HTTP response codes
  • MIME types
  • Brief about HTTPS
  • What is AJAX (or AJAJ)
  • Using the XMLHttpRequest object
  • Synchronous AJAX operation
  • Asynchronous AJAX operation
  • Brief about RES web services
  • Brief about CORS and why it's important to know about it

Unit testing

  • Unit testing in JS
  • Installation of Jasmine
  • Writing Jasmine test functions
  • Overview of expect matchers
  • Jasmine life-cycle methods
  • Selectively running tests
  • Testing async code

Transpiled languages

  • What is transpilation
  • What is TypeScript (TS) and why is so popular
  • Installation of typescript
  • Type support examples in TS
  • Classes in TS
  • Getters and setters in TS classes
  • Generic classes in TS
  • What is CoffeeScript
  • What is GrooScript

Useful libraries and tools

  • Lodash - Versatile utilities
  • Underscore - Prequel to lodash
  • MomentJS - Powerful date handling
  • jQuery - Simple DOM/BOM/AJAX handling
  • ExpressJS - REST web services server
  • GulpJS - the build tool
  • Bower - the library manager
  • Yeoman - the skeleton and snippet manager
Duration3 Days
PrerequisitesKnowledge in any program/script language
  • NodeJS
  • JetBrains WebStorm IDE
  • Google Chrome browser
Course Dates
DatePlace Price
2020-02-17Stockholm 19 000 kr
2020-03-09Stockholm 19 000 kr
2020-03-30Stockholm 19 000 kr
2020-04-14Stockholm 19 000 kr
2020-05-25Stockholm 19 000 kr
2020-06-15Stockholm 19 000 kr

Same-Company Discout

We offer a 20% discount for additional participants from the same company and at the same course date. Read more here.

Teaching Language

Our printed course material is always authored in English. The oral presentation in our classrooms is generally in Swedish, unless all participants agree to that we perform the course in English.

On-Site Course

If you order an On-Site course, we will come to you and hold the course in your office. The price is determined by our price model and is based on the number of course days, number of participants and any travel and lodging.

Read more about out price modell and term of sales here.

Related Courses
CourseDays Level
NodeJS2 IntermediateShow