1. [Theory – 1.5 h: Practice – 1.5 h] JavaScript Language
- JavaScript versions and implementations
- JavaScript application scope (browser, server side, mobile development)
- Data types: String, Number, Boolean (notions of truthy and falsy)
- Operators, operator priorities
- Declaring variables: var, const, let
- Loops: while, for, for … in, for …of
- Working with numbers and strings
- Values null and undefined: differences and use cases
- Working with the console
- Exceptions in JavaScript
2. [Theory – 1 h: Practice – 2 h] JSON, objects and arrays
- JSON format, examples
- JSON.parse and stringify
- Objects, working with Object class
- Creating objects (using the literal {}, operator new, method create)
- Prototype inheritance, __proto__ reference
- Getters and Setters
- Operator in and hasOwnProperty, notion of enumerable properties
- Method toString(), calling and overriding the method
- Method valueOf(),calling and overriding the method
- Creating arrays: literals and new Array()
- Automatically changing of the array size
- Getting and setting the array length, array truncation
- Using methods join() and concat()
- Using method sort, setting the order of array sorting
- Using methods slice and splice
- Using methods push, pop, shift, unshift: creating a stack or queue
3. [Theory – 1 h: Practice – 2 h] Working with date and time
- Using constructor new Date()
- Notion of computer representation of date as time elapsed since Epoch
- Using getTime() and setTime()
- Parsing the date string
- Options for creating strings in JS: using single and double quotes
- String interpolation (string in apostrophes)
- Quoting of special characters in a string
- String concatenation, upper and lower case
- Searching for a substring with indexOf() and lastIndexOf()
- Selecting a substring with substring() and substr()
- Using methods includes, endsWith, startsWith
4. [Theory – 1.5 h: Practice – 1.5 h] Using JavaScript in browser: DOM Model
- Managing the browser window, document, events, and layout (CSS)
- Window object and its application
- Connecting JavaScript code to HTML page
- Sequence of scripts execution on the page
- Caching scripts, CDN servers, JavaScript force reloading
- Using references, connecting JavaScript to references
- The onload event and its use
- XSS attacks against web sites
- Working with DOM: using window, document, childNodes
- Manipulating a document using DOM: creating, deleting, moving elements
- Using getElementById(), getElementsByTagName(), getElementsByClassName() for searching elements on a page
- Using methods and properties of HTMLDocument and HTMLElement
5. [Theory – 1.5 h: Practice – 1.5 h] Events in Browser
- Notion of event-driven programming
- Event handlers and listeners
- Attaching event handlers with addEventListener()
- Properties and methods of Event class
- Events bubbling and capturing
- Stopping propagation
- Window events
- Mouse and keyboard events, special properties of events
- Form Events
6. [Theory – 1.5 h: Practice – 1.5 h] Working with CSS and Managing Styles
- CSS standard, main properties of CSS
- Common styles and styles of separate elements
- Cascading styles
- CSS selectors
- Changing CSS with JavaScript
- CSS box model: margin, padding, border
- Managing element visibility: visibility and display
- Positioning of elements: absolute, fixed, relative, setting top and left
- Units of measurement – px, pt, etc.
- Element overflow and managing through the overflow property
- Managing document layers: zIndex property
- Animation, moving elements
- Working with classes, setting className
- Working with visibility and transitions
- Method querySelectorAll()
7. [Theory – 3 h: Practice – 3 h] Working with Modules in JavaScript, NPM, Webpack
- Reasons for using modules
- Export from module
- Import from module
- Re-export
- Working with NPM, package.json
- The node_modules folder, loading packages with NPM
- Global and local installation of packages
- Using Webpack for package assembly
- CSS and TypeScript loaders
- Configuration of webpack.config.js
- Creating a bundle, compressing
- Webpack plugins
- Using legacy modular systems – CommonJS and AMD
- Using CommonsChunkPlugin, multiple entry points
- Hot module replacement (HMR)
8. [Theory – 1.5 h: Practice – 1.5 h] Classes and Inheritance in JavaScript
- Prototype inheritance, reference __proto__
- Object prototype
- Using instanceof
- Keyword class, creating classes
- Keyword super
- Using the method Object.assign()
- Using the method Object.defineProperty()
- Getters and setters
- Spread operator for working with objects and arrays
- Destructuring of array and object
9. [Theory – 1.5 h: Practice – 1.5 h] Functional Programming in JavaScript
- Functions as variables
- Array arguments
- Class Function, methods call() and apply()
- Method bind(), installing this and some parameters with bind
- Closures in JavaScript
- Encapsulation of values with closures
- Creating a function through the Function constructor: constructing a string
- Arrow functions, examples of using them
- Functional manipulation with array: find, findIndex, filter
- Examples of using map/filter/reduce for data processing in an array
- Rules for good code when writing functions
10. [Theory – 1.5 h: Practice – 2.5 h] Asynchronicity in JavaScript. Promises
- Notion and necessity of asynchronicity
- Working with setTimeout, setInterval, clearTimeout
- Callback functions
- Loss of this in using a callback function. Solutions (using bind, arrow functions, etc.)
- Notion of promises, return of Promise from asynchronous function
- Method Promise.all(), its application
- Async/await syntax, options of using, restrictions
- Handling exceptions: Promise reject, exception handling in case of asynchronous calls
11. [Theory – 1.5 h: Practice – 1.5 h] Working with the server. HTTP Protocol. REST Services
- HTTP protocol
- HTTP headers and methods (GET, POST, PUT, DELETE, etc.), data transfer
- HTTP servers (overview)
- HTTP server response codes
- Using forms for data uploading
- Uploading data to server with AJAX
- REST architecture: advantages and peculiarities
- Implementation of CRUD (Create/Read/Update/Delete) with REST
- Using the fetch() function for getting and sending data
- Documenting REST services with Swagger
- Notion of HATEOAS, using it
12. [Theory – 1 h: Practice – 2 h] AXIOS Library. WebSocket Protocol
- Comparison of high-level Axios library and using low-level fetch() method
- GET and POST requests in Axios
- Using async/await with Axios
- Error handling in using Axios
- Cancelling a request with Axios
- WebSocket Protocol
- Examples of using WebSocket, comparison to HTTP