JavaScript - Fundamentals

За курса

Курсът "JavaScript - Fundamentals" предлага цялостно обучение, което едновременно акцентира върху теоретичните основи и практическите приложения на езика JavaScript и неговата екосистема. Програмата е структурирана от преподавател и програмист с повече от 17 години опит в програмирането и Уеб Технологиите, така че максимално да улесни и ускори процесът за усвояване на стабилна основа от знания и умения, необходими за стартирането на кариера в сектора.

Основни характеристики на курса:

  • Обхват на темите: в курсът задълбочено се разглеждат основните концепции в програмирането с JavaScript, взаимодействието му с HTML DOM за създаване на динамични Уеб сайтове, разработка на SPA приложения чрез консумиране на REST API, работа с модули и JavaScript библиотеки, необходимият инструментариум, както и използване на Node.js и NPM за Full-Stack разработка.
  • Практически проекти: всички основни теми са съпътствани с практически проекти, които са сърцето на този курс. Участниците ще имат възможност да разработят реални и полезни в практиката проекти като "Guess the number", "Quiz Game", "Todo App", "Simple Digital Library System", "Weather app" и други, които биха дали значима тежест в тяхното портфолио.
  • Насоченост към съвременни Уеб технологии: разглежданите в курса теми са в крак с модерното Уеб разработване, актуалните инструменти и платформи, използвани в процесът на разработка на приложения във водещите софтуерни компании, включително работа с Git и GitHub, разбиране на JavaScript екосистемата, приложение на TypeScript и Angular.
  • Баланс между теория и практика: всяка теоретична лекция изобилства от примери и е съпроводена от множество задачи за домашно, които след това се дискутират в часовете с преподавателя (code review). По време на часовете преподавателя демонстрира основните концепции с код на живо и дискусии, които да ангажират изцяло курсистите.
  • Възможности за кариерно развитие: курсът предоставя солидна основа, която да помогне на участниците да започнат или ускорят своята кариера в областта на Уеб разработката.

За кого е подходящ курсът:

  • Начинаещи в програмирането, които искат да се потопят в света на JavaScript и ентусиазирани да създават модерни Уеб приложения.
  • Разработчици с опит, които искат да усъвършенстват своите умения и да се запознаят с модерните подходи и инструменти в практиката.
  • Хора, търсещи кариерно развитие в Уеб разработката и програмирането.

Course Syllabus

Toggle sub-themes

JavaScript Basics

Welcome to the Course

  1. An overview of course organization to guide your learning journey.
  2. What skills and knowledge you will master.
  3. Course resources.

Setup course environment

  1. Setting up the development environment with VSCode.

Introduction to JavaScript

  1. Overview and history of JavaScript.

JavaScript: basic syntactic elements

  1. Variables, primitive data types, operators.
  2. Control structures: if-else, switch-case.
  3. Loops.

Practical Exercise: code "Guess the number" game logic

JavaScript: Arrays and Operations

  1. Creating and manipulating arrays.
  2. Array as Object: methods and properties.
  3. Loop over arrays.

Practical Exercise: code "Quiz Game" logic

JavaScript: Functions

  1. Defining functions: function declaration vs function expression.
  2. Function Invocation.
  3. Functions are first-class citizens!
  4. Scope and shadowing.
  5. Arrow Syntax

Practical Exercise: refactor "Guess the number" and "Quiz Game" using functions

JavaScript - Objects

  1. Object creation: by literal.
  2. Access object's properties (dot vs. square brackets notation).
  3. Factory and Constructor Functions; ES6 Class Syntax.

Practical Exercise: code "Simple Digital library System" logic

Standard Built-in Objects in EcmaScript

  1. Global objects: Math, Date, String, etc.
  2. Understanding built-in object properties and methods.
  3. Primitive objects boxing (wrapping).

Timers in JavaScript

  1. Using setTimeout and setInterval.
  2. Clearing and removing timers.

Practical Exercise: "Create a Countdown Timer"

Exceptions handling

  1. What are Exceptions?
  2. Exception handling.
  3. Throwing exceptions.
  4. Custom exceptions.

Working with Browsers API

JS interaction with Browser (HTML DOM, BOM)

  1. JavaScript host environments.
  2. DOM and BOM overview.
  3. Accessing and modifying the DOM.

Handling HTML DOM Events

  1. DOM events overview.
  2. How to handle DOM events with JS.
  3. Using the Event Object.

Manipulating CSS Properties with JavaScript

  1. Dynamically changing styles with JavaScript.
  2. Accessing computed styles.

Practical Exercise: "Create Todo App Application"

DOM manipulations with jQuery

  1. Basics of jQuery.
  2. DOM manipulation with jQuery.

Client-side Storages

  1. Cookies.
  2. SessionStorage.
  3. LocalStorage.

Modern Web Development with JavaScript

Introduction to CLI

  1. Introduction to Command Line Interface (CLI) and its importance for developers.
  2. Comparison of CLIs in Windows, MacOS, Linux.
  3. Basic navigation and file system commands.

Working with Git and GitHub

  1. Overview of Version (Source) Control Systems. Why Git?
  2. Common Git commands (git init, git clone, git add, git commit, git push, etc.).
  3. Setting up a GitHub repository and pushing code via CLI.
  4. How to explore and collaborate to a GitHub project.

Deployment strategies for JavaScript applications

  1. Understanding the deployment process for JavaScript applications.
  2. Static vs. Dynamic Deployment.
  3. Cloud Hosting Platforms: Overview of platforms like Heroku, Vercel, Netlify.

Practical Exercise: "Collaborate on Todo List Project in GitHub. Deployment on GitHub Pages."

Other ES6 New Features

  1. The spread operator.
  2. Rest parameters.
  3. Destructuring assignment.
  4. New object literal features.
  5. The Class Syntax.
  6. The for-of loop.

Functional programming concepts in JavaScript

  1. Overview of core concepts of functional programming (immutability, pure functions).
  2. Higher-Order Functions in JavaScript.
  3. New features in ES6 relevant to functional programming (arrow functions, spread operator, etc.).
  4. Map, Reduce, and Filter methods in JavaScript.
  5. forEach Array method.

Promises. Async/Await

HTTP Basics and AJAX with Fetch API

  1. Client-Server Communications on HTTP.
  2. What is AJAX?.
  3. Fetch API
  4. JSON (JavaScript Object Notation) Overview

Consuming REST JSON APIs

  1. Overview of REST APIs, their importance in web and mobile applications.
  2. CRUD operations and their REST equivalent.
  3. Making GET, POST, PUT, DELETE requests using JavaScript's Fetch API.

Fundamentals of NodeJS and NPM

  1. Introduction to Node.js and its architecture.
  2. Understanding asynchronous programming in Node.js and the Event Loop.
  3. Introduction to NPM.
  4. Basic NPM commands.

Practical Exercise: Create a TodoApp with REST JSON-Server

Modules in JavaScript

  1. Introduction to ES6 Modules.
  2. Exporting and Importing Modules.
  3. Named and default exports.

JavaScript Development Tools

  1. Introduction to tools for JavaScript transpilation and module bundling.
  2. Using Babel for browser compatibility.
  3. Webpack Basics: bundle and optimize JavaScript applications.
  4. Configuration of Babel and Webpack.

TypeScript Basics

  1. Introduction to TypeScript.
  2. Installing and configuring TypeScript in a development environment.
  3. Compiling TypeScript.
  4. Basic type annotations.
  5. Interfaces and type inference.
  6. Functions and Generics.

Practical Exercise: "Building Todo App with TypeScript"