In this course we begin with Node's background, concepts and strategies for writing asynchronous code. We then examine Node's module system, including built-in modules, application modularization as well as the NPM third party module registry. From there we tackle EventEmitters and Streams, as well as utilities for interacting with the local file system. Next we look at using Node to write both client and server web applications, as well as real time integration with Socket.IO. We cover writing unit tests using both the built-in assert module and third party frameworks. We wrap up with a look at launching child processes in Node and writing scalable applications with the "cluster" module.