Course Outline

JavaScript/TypeScript (2 days)

Getting Started

  • ECMAScript and JavaScript/TypeScript Introduction
  • JavaScript Dynamic and Loose Typing
  • TypeScript Static and Strong Typing
  • TypeScript Generic Types
  • Variable Declarations (var, const & let)
  • Primitive Types (number, string, Boolean, symbol, bigint, undefined, null)
  • JavaScript Memory Structure

Functions, Arrays & Objects

  • Function Declarations and Expressions
  • Arrow Syntax
  • Value of "this" and function types (call-site this and lexical this)
  • Function Arguments and Parameters
  • Spread and Rest Operators and Functions
  • Functions as Objects
  • Arrays and Array Literal Syntax
  • Array API
  • Immutable Operations with Arrays
  • Array Destructuring and Spread/Rest Operators
  • Objects and Object Literal Syntax
  • Shorthand Properties
  • Property Descriptors including Getter/Setter properties
  • Object API
  • Object Destructuring and Spread/Rest Operators
  • Object Extending, Sealing and Freezing

Classes & Prototype Inheritance

  • What is Prototype Inheritance?
  • Prototype Inheritance contrasted against Classical Inheritance
  • Exploring Getting and Setting properties on a prototype chain
  • Enumerating Properties and its Relationship to Prototype Inheritance
  • Using Classes to Build Objects and Setup Prototype Inheritance
  • Historical comparison to Function Constructors
  • Static Properties

Asynchronous Programming

  • Role of JavaScript in a Web Browser and Node.js
  • What is Non-Blocking, Asynchronous Programming
  • Event Loop and JavaScript Tasks
  • Understanding Closures
  • Role of Closures in Asynchronous Programming
  • Using Callbacks and Problems with Callbacks
  • Using Promises
  • Overview of XHR and Fetch APIs
  • Making AJAX Calls with JavaScript
  • Async/Await API

Modules

  • Overview of JavaScript Module Systems
  • Compare/Contrast AMD, CommonJS and ES2015 Modules
  • Static Nature of ES2015 Modules and Tree Shaking
  • Import/Export Syntax
  • Named Imports vs. Default Imports

 

Server-Side Programming (1 Day)

Node Projects

  • The Node Package Manager
  • Creating a project
  • The package.json configuration file
  • NPM, Yarn & Lock Files
  • Global vs. Local package installation
  • Semantic Versioning
  • Package Upgrading
  • Configuring Scripts with NPM

CommonJS and ES2015 Modules

  • Modularization
  • The CommonJS specifications
  • Defining modules with exports
  • Modules are singletons
  • Creating a package
  • Module scope and construction
  • Objects and Classes

File System

  • Synchronous vs. Asynchronous I/O
  • Path and directory operations
  • __dirname and __filename
  • Asynchronous file reads and writes

HTTP & Express

  • The HTTP protocol
  • Building an HTTP server
  • Rendering a response
  • Using the Express Framework
  • Define Routes and Building Routers
  • Reading POST data
  • Adding middleware
  • Build a REST Server

Data Sources (minimal coverage to show how Node.js interacts with a database, not coverage on the database itself)

  • How Node.js connects to databases
  • Connecting Node.js to SQL Server (SQL Express, Docker, Azure)
  • Performing Database Operations

Deploying Applications (general information)

  • Patterns for Deploying Node.js Applications
  • Installing NPM Packages for Production