FE412
Deep Dive Into JavaScript

Faculty
Alex Korzhikov
Software Engineer at HackerOne, Groningen
Course length
Duration
Total hours
Credits
Language
Course type
Fee for single course
Fee for degree students
Skills you’ll learn
Overview
The Deep Dive Into JavaScript course endorses Middle and Junior Web Developers to improve their software development skills and qualification in Web Technologies, as well as systematise their knowledge in backend programming in general. After the course developers will be able to write BackEnd applications in JavaScript & TypeScript programming languages and use ideas from modern Node.js frameworks.
Learning highlights
- The course extends knowledge of JavaScript & TypeScript programming languages, embraces modern EcmaScript standard, key Web platform features, explains their principles and features,
- overviews software design patterns - Event-Driven Paradigm, Module, REST API,
- uncovers Node.js ecosystem, principles and features of popular libraries (ExpressJS, Nest.js, Passport), as well as standards of projecting and managing, building and testing backend applications (npm, package.json),
- includes theory and practice with MongoDB, and discusses style, performance, and security techniques,
- provides materials, code examples, project tasks, and exercises for continuous learning.
Course outline
15 classes
Node.js and npm
Run Node.js programs. Understand and work with NPM. Manage dependencies and automate tasks with package.json.
Node.js. About. HTTP Server Example. Structure. Builtin Modules. Callbacks.
Package Manager NPM. Features of package.json. NPM Command-Line Interface.
Modules in Node.js
Understand Module design pattern and it's implementations in JavaScript. Export and import Node dependencies with CommonJS & ES Modules.
Module Pattern
Classic Implementation, AMD and RequireJS
Node.js Dependencies Resolution Algorithm
ES Modules and CommonJS
Events, Timers, Event Loop
See Event Loop, Events, Timer practical examples. Sync VS Async Callbacks Events Event Loop Timers From Callbacks to Promises
Asynchronous Node.js
Practice with different JavaScript asynchronous patterns. Understand and work with native streams module. File System API Example. Async/Await. Iterators. Generators. Async Iterators. Streams in Node.js.
Process Management
Features. Cluster. Child Processes. Worker Threads. Tools overview. PM2 CLI in Node.js.
Test Driven Development
Error Handling in Node.js. TDD Overview. Jest Test Framework. Tests, Assertions Setup, Teardown. Asynchronous Code. Mocks, Stubs.
Web Servers
TCP/IP, Addresses, Ports. HTTP(s) Protocols. Certificates. HTTP Server to serve files. Using streams. Introduction to Express. Hello Express! Express-Generator. Routing. Templates
REST API with Express
REST API. Methods, error codes. Swagger. Alternatives. Express middlewares. Cookies, Headers & Body. Introduction to Auth. PassportJS. JWT. Login Implementation Examples
MongoDB
Database types overview. NoSQL. Intro to MongoDB. Installation mongodb. Usage in Node.js. Collections, documents, fields. Queries, data operations. Connect Express to MongoDB. Mongoose
Advanced Web Server Aspects
MongoDB Features Overview. Aggregation Framework. Admin Features. Best Practices. Validate Endpoints. Logs. Tracing. Profiling.
Static Typing
Introduction to TypeScript. Overview. Tools. tsconfig.json. Types. Simple & Complex. Classes and Interfaces. Generics. Advanced Types. Namespaces.
Migrate to TypeScript
Decorators. Metadata. Local Setup. Build. ORM - Typegoose, Sequalize, TypeORM. Migrate Application to TypeScript. Introduction to Nest.js. Why Nest.js. Hello World.
Nest.js
Nest.js Concepts. Routing. CLI. Dependency Injection. Nest.js in Depth. Controllers, Providers, Modules, Middleware, Pipes & Guards. Validation. Interceptors. Authnetication
Deployment
CI/CD Aspects & Overview. Continuous Integration with Github. Environment Variables. Deploy Node.js Aspects. Gitlab CI/CD / Heroku. MongoDB Atlas in Cloud. Docker Node.js Solution. Start Node.js in Docker. Docker-compose.
Node.js Summary
Best Practices. Node.js Summary. Deno.
Course materials
Books
Prerequisites
The course is intended for junior and medium JavaScript and Web developers or Computer Science students. It would be great if you as a student:
Know JavaScript programming concepts, basics (variables, cicles, functions, closures, scope, this, built-in API - Date, Math, RegExp, Array - map, forEach, filter, reduce), Feel comfortable with Git, Have experience with JavaScript libraries / frameworks, Willing to solve Web coding and algorithmical exercises, Have experience with other programming languages, Know your IDE.
Methodology
The course focuses on the Server Side part of JavaScript - specifically, Node.js environment. During the Lectures, including materials - presentations, code, etc., Practical exercises and examples, Individual project assignments.
Grading
Alex’ primary interest is self development and craftsmanship. He enjoys teaching, exploring technologies, coding open source and enterprise projects, speaking and writing about programming - JavaScript, Node.js, TypeScript, Go, Docker, Ruby, Java, Kubernetes, JSON Schema, DevOps, Web Components, Algorithms. Alex has created several trainings and courses for Web developers.
See full profileApply for this course
Deep Dive Into JavaScript
by Alex Korzhikov
Total hours
45 Hours
Dates
Jun 13 - Jul 01, 2022
Fee for single course
€2999
Fee for degree students
€1999
How to secure your spot
Complete the form below to kickstart your application
Schedule your Harbour.Space interview
If successful, get ready to join us on campus
FAQ
Will I receive a certificate after completion?
Yes. Upon completion of the course, you will receive a certificate signed by the director of the program your course belonged to.
Do I need a visa?
This depends on your case. Please check with the Spanish or Thai consulate in your country of residence about visa requirements. We will do our part to provide you with the necessary documents, such as the Certificate of Enrollment.
Can I get a discount?
Yes. The easiest way to enroll in a course at a discounted price is to register for multiple courses. Registering for multiple courses will reduce the cost per individual course. Please ask the Admissions Office for more information about the other kinds of discounts we offer and what you can do to receive one.