-
JavaScript Essentials
- JavaScript Fundamentals
- Variables and Data Types
- Operators and Expressions
- Conditions and Loops
- Functions and Arrow Functions
- Scope, Hoisting and Closures
- Strings and Numbers
- Type Conversion and Coercion
- Date and Time
- Built-in Objects and Methods
-
DOM and Browser
- JavaScript in HTML
- DOM Tree and Element Selection
- Creating, Modifying and Removing Elements
- DOM Traversal
- Events and Event Listeners
- Event Bubbling and Delegation
- Browser APIs
- Timers: setTimeout and setInterval
- Browser DevTools and Debugging
-
Arrays and Objects
- Arrays and Array Methods
- Objects and Object Methods
- Destructuring and Spread Syntax
- Rest Parameters
- Iteration: for, for...of, for...in
- Map, Set and Other Collections
- References and Mutability
-
Strings and Numbers
- String Properties and Methods
- Template Literals
- Searching and Extracting Substrings
- Replacing and Splitting Strings
- Trimming and Changing Case
- String Interpolation and Formatting
- Number Types and Precision
- Type Conversion and Parsing
- Math Operators and Remainder
- Number Formatting
- Working with BigInt
-
Loops
- for Loop
- while and do...while Loops
- for...of and for...in Loops
- break and continue
- Nested Loops
- Looping Through Arrays and Objects
- Array Iteration Methods: forEach, map, filter, reduce
- Loop Control and Common Pitfalls
- Performance and Loop Optimization
-
Date and Time
- Date Object Fundamentals
- Creating Dates and Timestamps
- Getting and Setting Date Components
- Date Formatting and Localization
- Date Arithmetic and Comparisons
- Working with Timezones and UTC
- Parsing Date Strings
- Measuring Time Intervals
- Timers: setTimeout and setInterval
- Intl.DateTimeFormat
-
Built-in Methods
- Math Object: round, floor, ceil, abs, min, max, pow, sqrt
- Random Numbers: Math.random
- Generating Random Integers
- Number Methods: toFixed, toPrecision, Number.isNaN
- String Methods: includes, startsWith, endsWith, slice, substring, split, replace
- Array Methods: push, pop, shift, unshift, splice, slice
- Array Methods: includes, indexOf, find, findIndex
- Array Methods: map, filter, reduce, forEach, sort
- Array Methods: some, every, flat, flatMap
- Object Methods: keys, values, entries, assign
- Object Methods: fromEntries, hasOwn
- JSON: stringify and parse
- Set and Map
- Optional Chaining and Nullish Coalescing
- Spread Syntax and Rest Parameters
-
Functions in JavaScript
- Pure Functions
- Higher-order Functions
- Callbacks and Function Composition
- Immutability
- Closures and Currying
- Functional Array Methods
- Separation of Concerns
-
Browser Events
- Event Fundamentals and addEventListener
- Mouse Events: click, dblclick, mousedown, mouseup, mousemove
- Pointer Events: pointerdown, pointerup, pointermove
- Keyboard Events: keydown, keyup
- Keyboard Shortcuts and Key Detection
- Input Events: input, change, focus, blur
- Form Events: submit, reset
- Scroll Events and Scroll Position
- Wheel Events
- Touch Events and Mobile Interaction
- Drag and Drop Events
- Clipboard Events
- Window Events: load, resize, beforeunload
- Event Object and Event Properties
- Event Bubbling and Capturing
- Event Delegation
- preventDefault and stopPropagation
- Debouncing and Throttling Event Handlers
- Passive Event Listeners
-
Fetch and API
- HTTP Fundamentals
- JSON and Serialization
- Fetch API
- HTTP Methods and Status Codes
- Request Headers and Body
- Handling API Responses and Errors
- Loading and Error States
- Working with Public APIs
-
HTML Forms
- Form Elements and Input Types
- Reading and Handling Form Data
- Client-side Validation
- Custom Validation Messages
- Form Submission and Reset
- Working with FormData
-
Regular Expressions
- Regex Syntax and Patterns
- Character Classes and Quantifiers
- Matching and Searching
- Replacing Text
- Form Validation with Regex
-
Common website components: modals, tabs, burger menus
- Modal Windows
- Tabs and Accordions
- Dropdowns and Burger Menus
- Image Sliders and Carousels
- Search and Filtering
- Sorting and Pagination
- Dynamic Lists
- Reusable UI Components
-
Popular JavaScript Libraries
- jQuery: DOM Manipulation, Events and AJAX
- Bootstrap: Components, Modals, Tooltips and Layout
- Swiper: Sliders, Carousels and Touch Navigation
- GSAP: Advanced Animations and Timelines
- Anime.js: Lightweight Animations
- AOS: Scroll-triggered Animations
- Chart.js: Charts and Data Visualization
- D3.js: Advanced Data Visualization
- Lodash: Utility Functions and Data Manipulation
- Day.js: Date and Time Manipulation
- date-fns: Date Utilities
- Axios: HTTP Requests
- Zod: Data Validation
- SortableJS: Drag and Drop Sorting
- Three.js: 3D Graphics
- Fabric.js: Interactive Canvas and Drawing
- SweetAlert2: Dialogs and Notifications
- Select2: Enhanced Select Elements
- FullCalendar: Calendar Interfaces
- Howler.js: Audio Playback
- Library Installation with npm and pnpm
- CDN vs Package Installation
- Library Documentation and Version Compatibility
- Choosing Between Native JavaScript and Libraries
-
ES6 syntax and features
- let, const and Arrow Functions
- Template Literals
- Optional Chaining and Nullish Coalescing
- Default Parameters
- Modules: import and export
- Classes and Inheritance
- Prototypes and the Prototype Chain
- this, call, apply and bind
-
LocalStorage and browser storage
- LocalStorage and SessionStorage
- Cookies Fundamentals
- Saving and Loading JSON Data
- Persisting Application State
- Browser Storage Limitations
-
JavaScript Debugger
- Browser DevTools Overview
- Console: log, warn, error, table and dir
- Using debugger and Breakpoints
- Step Into, Step Over and Step Out
- Inspecting Variables and Scope
- Call Stack and Execution Context
- Conditional Breakpoints
- Watch Expressions
- DOM Breakpoints
- Debugging Event Handlers
- Network Tab and API Debugging
- Source Maps
- Debugging Asynchronous Code
- Handling Exceptions and Stack Traces
- Common JavaScript Errors
- Performance Profiling and Memory Inspection
-
TypeScript
- TypeScript Fundamentals
- Primitive and Complex Types
- Type Inference and Type Annotations
- Interfaces and Type Aliases
- Union and Intersection Types
- Narrowing and Type Guards
- Generics
- Typing Functions and Objects
- Typing DOM Elements
- Working with API Response Types
- TypeScript Configuration
-
OOP in JavaScript
- Objects and Methods
- Constructor Functions
- Classes and Constructors
- Inheritance and Encapsulation
- Static Methods and Properties
- Prototypes and the Prototype Chain
- this, call, apply and bind
-
Charts and Data Visualization
- Working with Chart Libraries
- Line, Bar and Pie Charts
- Chart Configuration and Customization
- Dynamic Data Updates
- Interactive Charts
- Visualizing API Data
-
JavaScript animations: from pure to Three.js
- CSS Transitions and Animations
- Animating with JavaScript
- requestAnimationFrame
- Scroll-based Animations
- Canvas API Fundamentals
- Three.js and 3D Web Development
-
Moving on to frameworks: React
- Components and JSX
- Props and Component Composition
- State and Event Handling
- Conditional Rendering
- Lists and Keys
- Forms in React
- useEffect and Side Effects
- Custom Hooks
- Routing and Navigation
- API Integration
- TypeScript with React
- Project Structure and Reusable Components
-
Making Games with JavaScript
- Game Loops and Timing
- Keyboard and Mouse Input
- Collision Detection
- Canvas-based Games
- Sprites and Animation
- Physics Fundamentals
- Game State Management
-
OOP in Python
- Objects and Methods
- Constructor Functions
- Classes and Constructors
- Inheritance and Encapsulation
- Static Methods and Properties
- Prototypes and the Prototype Chain
- this, call, apply and bind
-
NPM, packages, pnpm
- Node.js Fundamentals
- NPM and Package Management
- package.json and npm Scripts
- Installing and Managing Dependencies
- pnpm
- Vite and Development Server
- Environment Variables
- JavaScript Modules and Project Structure
- Git and GitHub
-
Asynchronous JavaScript
- Synchronous vs Asynchronous Execution
- Callbacks
- Promises
- async and await
- Error Handling: try...catch
- Promise Chaining and Promise Combinators
- Event Loop and Task Queues
-
Web Workers and Multithreading
- JavaScript Concurrency Fundamentals
- Main Thread and Event Loop
- What Web Workers Are and When to Use Them
- Creating a Worker with the Worker API
- Sending and Receiving Messages
- postMessage and Message Events
- Structured Clone Algorithm
- Transferring ArrayBuffers
- SharedArrayBuffer and Atomics Fundamentals
- Worker Lifecycle and Error Handling
- Dedicated Workers vs Shared Workers
- Worker Limitations: DOM Access and Browser APIs
- Web Workers with Modules
- Practical Use Cases: Data Processing, Calculations and File Parsing
- Communicating Between the Main Thread and Workers
- When to Use Web Workers vs Async JavaScript
-
Git and Github
- What Git Is and Why Version Control Matters
- Installing Git and Initial Configuration
- Creating a Repository with git init
- Cloning Repositories with git clone
- Checking Status with git status
- Staging Changes with git add
- Committing Changes with git commit
- Viewing History with git log
- Working with .gitignore
- Branches and Branch Management
- Switching Branches with git switch
- Merging Branches with git merge
- Handling Merge Conflicts
- Connecting Local Repositories to GitHub
- Pushing and Pulling Changes
- Fetching Remote Changes
- Working with Remote Repositories
- Creating and Reviewing Pull Requests
- Forking and Cloning Repositories
- Issues and Discussions
- README.md and Project Documentation
- GitHub Collaboration Workflow
- Resolving Common Git Problems
- Reverting Changes with git revert
- Undoing Local Changes Safely
- Git Tags and Releases
- GitHub Pages Fundamentals
- GitHub Actions Introduction
-
Testing and Code Quality
- JavaScript Unit Testing
- Assertions and Test Structure
- Mocking and Test Doubles
- Testing Asynchronous Code
- ESLint and Code Formatting
- Refactoring and Clean Code
- Debugging and Error Analysis