- Регистрация
- 27 Авг 2018
- Сообщения
- 37,233
- Реакции
- 523,842
- Тема Автор Вы автор данного материала? |
- #1
Голосов: 0
ОПИСАНИЕ:
JavaScript Продвинутый уровень (2023) [stepik] [Sergey Romanenko]
Этот курс представляет следующий этап вашего путешествия в мире разработки приложений на JavaScript.
Если вы владеете основами и стремитесь глубже освоить продвинутые концепции и методы, то этот курс именно для вас.
Обширные практические задания позволят вам закрепить и применить знания на практике.
Вы также столкнетесь с разнообразными тестовыми и классическими задачами, которые часто встречаются на собеседованиях в ведущих компаниях, включая Google, Amazon, Apple, Twitter и Microsoft.
Чему вы научитесь:
- Понимание основных принципов проектирования программного обеспечения.
- Знание жизненного цикла программного обеспечения и способность разрабатывать программы, учитывая каждый этап этого цикла.
- Навыки алгоритмизации, включая способы построения и анализа алгоритмов для решения разнообразных задач.
- Умение разрабатывать и применять алгоритмы сортировки и поиска для эффективной обработки данных.
- Глубокое понимание работы с объектами в JavaScript, включая создание, манипуляцию и управление свойствами и методами объектов.
- Знание и практические навыки работы с прототипами объектов, позволяющие создавать иерархии прототипов.
- Умение создавать и использовать классы, применять принципы объектно-ориентированного программирования и создавать объектные структуры.
- Практические навыки продвинутой работы с функциями, включая создание и использование анонимных функций, асинхронных функций, замыканий и генераторов.
- Понимание и применение различных структур данных, таких как массивы, списки, стеки, очереди, деревья и хэш-таблицы, для эффективного хранения и обработки данных.
- Знание паттернов проектирования и способность выбирать и применять подходящие паттерны для улучшения структуры, расширяемости и поведения программ.
- Навыки асинхронного программирования, включая использование обратных вызовов, обещаний, асинхронных функций и динамического импорта.
- Умение работать с модулями в JavaScript, включая импорт и экспорт функций, классов и данных, а также использование инструментов сборки.
Данный курс предлагает множество практических тестовых и классических программных задач, включая те, которые регулярно встречаются на собеседованиях в известных компаниях, таких как Google, Amazon, Apple, Twitter и Microsoft.
Модули курса:
Введение.
В этом модуле вы познакомитесь со структурой курса, руководством по стилю написания кода на JavaScript, манифестом по изучению языка программирования JavaScript, инструментами для разработки.
Введение в программирование.
В этом модуле вы познакомитесь с ролью языка программирования, развивая алгоритмическое мышление и осознавая важные качества успешного разработчика. Этот модуль является фундаментом для последующего изучения JavaScript и создания программного кода.
Принципы проектирования программного обеспечения.
Этот модуль поможет вам овладеть важными концепциями и принципами проектирования ПО. Вы познакомитесь с такими принципами, как YAGNI (You Aren't Gonna Need It), KISS (Keep It Simple, Stupid), DRY (Don't Repeat Yourself), SOLID (Принципы SOLID), BDUF (Big Design Up Front) и Occam's Razor.
Жизненный цикл программного обеспечения.
В этом модуле вы изучите основные стадии разработки ПО, такие как, анализ и планирование, проектирование, реализацию, тестирование и отладку, а также развертывание и сопровождение. Этот модуль позволит вам понять полный процесс разработки программного обеспечения от начала до конца.
Алгоритмизация.
В этом модуле вы изучите определение алгоритма, его свойства, различные виды алгоритмов, схемы алгоритмов и псевдокод. Этот модуль поможет вам развить навыки разработки и понимания алгоритмов, что является важным фундаментом для программирования и решения задач.
Алгоритмы сортировки.
В этом модуле вы познакомитесь с различными алгоритмами сортировки. Вы изучите пузырьковую сортировку, шейкерную сортировку, сортировку выбором, сортировку вставками, сортировку слиянием и быструю сортировку. Каждый алгоритм будет подробно объяснен, и вы сможете понять принципы их работы.
Алгоритмы поиска.
В этом модуле вы изучите два основных алгоритма поиска: линейный поиск и бинарный поиск. Вы узнаете, как работает каждый из них, и какие преимущества и ограничения у них имеются.
Объекты в JavaScript.
В этом модуле вы освоите объекты в JavaScript от основных концепций до продвинутых методов. Изучите запись и удаление элементов, работу с ключевым словом this, опциональную цепочку, глубокое копирование и деструктуризацию. Познакомьтесь с лаконичными свойствами и методами, дескрипторами свойств и свойствами доступа. Рассмотрите подтипы объектов, характеристики, мутации и их предотвращение.
Практика по работе с объектами.
Этот практически ориентированный модуль предоставит вам реальный опыт работы с объектами в JavaScript. Через серию задач вы примените знания, приобретенные в предыдущих модулях, для создания, манипулирования и управления объектами. Решая практические задачи, вы углубите свое понимание концепций объектов и приобретете навыки, необходимые для эффективной разработки приложений.
Прототипы объектов.
В этом модуле вы разберетесь в сути прототипов объектов в JavaScript. Изучите концепцию прототипного наследования и поймете, как оно обеспечивает экономию памяти и гибкость в разработке. Освоите динамическое обновление прототипов, научитесь создавать иерархии наследования и узнаете, как применять прототипы для достижения модульности.
Практика по работе с прототипами объектов.
В этом модуле вы активно примените знания о прототипах объектов в практике. Через ряд задач и проектных сценариев вы научитесь создавать, наследовать и модифицировать прототипы для эффективной разработки JavaScript-приложений.
Классы.
В этом модуле вы освоите концепцию классов в JavaScript. Изучите определение, инициализацию и создание экземпляров класса. Погрузитесь в работу со свойствами, включая частные и статические варианты. Освоите создание методов, включая частные и статические, а также использование геттеров и сеттеров. Узнаете, как работать с наследованием, обеспечивая эффективную организацию кода.
Практика по работе с классами.
В этом модуле вы примените знания о классах в практике. Через ряд задач вы научитесь создавать классы, инициализировать экземпляры, определять свойства и методы.
Объектно-ориентированное программирование.
В этом модуле вы погрузитесь в основы объектно-ориентированного программирования (ООП). Вы изучите суть ООП и его преимущества, а также научитесь применять ключевые концепции: инкапсуляцию, наследование, полиморфизм и абстракцию. Разберетесь, как организовать код в объектно-ориентированной парадигме.
Продвинутая работа с функциями.
В этом модуле вы углубитесь в продвинутые аспекты работы с функциями в JavaScript. Вы изучите объект функции, освоите остаточные параметры и динамическое создание функций. Познакомитесь с методами для работы с функциями и расширением их прототипа. Овладеете функциями планирования вызовов, рекурсивными функциями и колбэками. Узнаете об IIFE-функциях, замыканиях и генераторах, а также о применении мемоизации для оптимизации работы.
Практика по работе с функциями.
В этом модуле вы на практике примените полученные теоретические знания по продвинутой работе с функциями в JavaScript.
Введение в структуры данных.
В этом модуле вы познакомитесь с основами структур данных. Узнаете, что такое структуры данных и почему они играют ключевую роль в разработке программ. Разберетесь, какие выгоды приносит знание структур данных и как они способствуют эффективному управлению и организации информации в ваших приложениях.
Структуры данных.
В этом модуле вы погрузитесь в мир основных структур данных. Изучите массивы, множества, списки, стеки, очереди, деревья и хэш-таблицы. Разберетесь, как эффективно организовать и управлять данными, получите навыки выбора и применения подходящей структуры данных в разнообразных сценариях.
Практика по работе со структурами данных.
В этом модуле вы примените практические навыки работы с основными структурами данных. Через ряд задач вы углубите свое понимание массивов, множеств, списков, стеков, очередей, деревьев и хэш-таблиц.
Введение в паттерны проектирования.
В этом модуле вы вы узнаете, что такое паттерн проектирования, их историю и классификацию. Вы поймете, как использование паттернов может улучшить структуру и эффективность вашего кода, обеспечивая более легкое понимание и поддержку программных решений.
Порождающие паттерны проектирования.
В этом модуле вы получите понимание порождающих паттернов проектирования. Изучите паттерны "Одиночка", "Фабрика", "Строитель" и "Прототип".
Структурные паттерны проектирования.
В этом модуле вы углубитесь в изучение структурных паттернов проектирования. Рассмотрите паттерны "Адаптер", "Фасад", "Декоратор", "Мост", "Компоновщик", "Заместитель" и "Легковес".
Поведенческие паттерны проектирования.
В этом модуле вы углубитесь в изучение поведенческих паттернов проектирования. Изучите паттерны "Наблюдатель", "Стратегия", "Состояние", "Цепочка обязанностей", "Команда", "Итератор", "Посредник" и "Снимок". Вы поймете, как эти паттерны помогают организовать взаимодействие и поведение объектов в приложениях.
Асинхронное программирование.
В этом модуле вы овладеете основами асинхронного программирования. Изучите важность асинхронности, а также рассмотрите проблемы, связанные с синхронным кодом. Погрузитесь в понимание стека вызовов и цикла событий, познакомьтесь с обратными вызовами. Освоите концепции обещаний и асинхронных функций.
Модули.
В этом модуле вы углубитесь в концепцию модульности в JavaScript. Изучите сущность модулей и их важность для организации кода. Рассмотрите CommonJS и ECMAScript модули, понимание хранения состояния, изоляции и независимости. Освоите отложенную инициализацию, правила экспорта и импорта, включая импорт по умолчанию и динамический импорт. Вы познакомитесь с инструментами сборки и методами оптимизации модульной структуры.
Заключение.
В заключение курса JavaScript Продвинутый уровень, вы получите фундаментальные знания и навыки, необходимые для разработки программного обеспечения на языке программирования JavaScript.
Программа курса:
1) Введение
- О Курсе
- Как успешно решать задачи на программирование?
- Руководство по стилю написания кода на JavaScript
- Манифест по изучению языка программирования JavaScript
- Установка Node.js
- Установка VSCode
- Роль языка программирования в создании программного обеспечения
- Программирование – это не только знание языка программирования
- Важность развития логического мышления для программиста
- Качества хорошего разработчика
- Как не стать code monkey программистом
- Улучшайте свои фундаментальные знания!
- Важность теории и практики при изучении программирования.
- Технический долг
- Проектирование ПО
- YAGNI
- KISS
- DRY
- SOLID
- BDUF
- Occam's Razor
- Стадии разработки ПО
- Анализ и планирование
- Проектирование
- Реализация
- Тестирование и отладка
- Развертывание и сопровождение
- Думай алгоритмически!
- Что такое алгоритм?
- Свойства алгоритмов
- Виды алгоритмов
- Схемы алгоритмов
- Псевдокод алгоритмов
- Оценка сложности алгоритмов
- Машина Поста
- Машина Тьюринга
- Динамическое программирование
- Пузырьковая сортировка
- Шейкерная сортировка
- Сортировка выбором
- Сортировка вставками
- Сортировка слиянием
- Быстрая сортировка
- Линейный поиск
- Бинарный поиск
- Основы объектов
- Объявление переменных объектов
- Точечная запись
- Внутренние пространства имён
- Скобочная запись
- Запись элементов
- Удаление элементов
- Ключевое слово this
- Опциональная цепочка
- Распространение
- Глубокое копирование
- Деструктуризация
- Динамическое определение свойств и значений
- Лаконичные свойства и методы
- Дескрипторы свойств
- Свойства доступа
- Подтипы объектов
- Характеристики объектов
- Мутация объектов
- Опасность мутации объектов
- Примитивные типы данных иммутабельные
- Предотвращение мутации объектов
- Часть 1 ( ★☆☆ )
- Часть 2 ( ★★☆ )
- Часть 3 ( ★★★ )
- Что такое прототипы объектов ?
- Прототипное наследование
- Экономия памяти
- Динамическое обновление
- Иерархия наследования
- Гибкость и модульность
- Часть 1 ( ★☆☆ )
- Часть 2 ( ★★☆ )
- Что такое Классы?
- Определение и инициализация
- Инстанс класса
- Свойства
- Частные свойства
- Статические свойства
- Частные статические свойства
- Методы
- Частные методы
- Статические методы
- Геттеры и сеттеры
- Наследование
- Проверка типа объекта
- Часть 1 ( ★★☆ )
- Часть 2 ( ★★★ )
- Что такое ООП?
- Инкапсуляция
- Наследование
- Полиморфизм
- Абстракция
- Объект функции
- Остаточные параметры
- Динамическое создание функций
- Методы для работы с функциями
- Расширение прототипа функций
- Функции планирования вызовов
- Рекурсивные функции
- Колбэк функции
- IIFE функции
- Замыкания
- Генераторы
- Мемоизация
- Часть 1 ( ★☆☆ )
- Что такое структуры данных?
- Зачем знать структуры данных?
- Массив
- Множество
- Список
- Стек
- Очередь
- Дерево
- Хэш-таблица
- Часть 1 ( ★☆☆ )
- Часть 2 ( ★☆☆ )
- Часть 3 ( ★☆☆ )
- Часть 4 ( ★☆☆ )
- Часть 5 ( ★★☆ )
- Часть 6 ( ★★☆ )
- Что такое паттерн проектирования?
- История паттернов проектирования
- Зачем знать паттерны проектирования?
- Классификация паттернов проектирования
- Одиночка
- Фабрика
- Строитель
- Прототип
- Адаптер
- Фасад
- Декоратор
- Мост
- Компоновщик
- Заместитель
- Легковес
- Наблюдатель
- Стратегия
- Состояние
- Цепочка обязанностей
- Команда
- Итератор
- Посредник
- Снимок
- Введение в асинхронное программирование
- Синхронный код и его проблемы
- Стек вызовов
- Цикл событий
- Обратные вызовы
- Обещания
- Асинхронные функции
- Что такое модуль?
- CommonJS модули
- ECMAScript модули
- Хранение состояния
- Изоляция и независимость
- Отложенная инициализация
- Экспорт до объявления
- Экспорт отдельно от объявления
- Импорт *
- Импорт as
- Экспорт as
- Экспорт по умолчанию
- Реэкспорт
- Динамические импорт
- Инструменты сборки
Итоги курса:
Основные цели курса.
Задумывая этот курс, я стремился создать не просто учебный материал, а настоящий путеводитель, который поможет вам не только овладеть продвинутыми концепциями языка программирования JavaScript, но и почувствовать уверенность в написании кода, применяя различные концепции в решении задач.
Курс предоставляет обширный набор практических заданий, которые помогут вам закрепить полученные теоретические знания.
Вы научитесь не только анализировать задачи, но и находить эффективные решения, что способствует развитию вашей уверенности в программировании на JavaScript.
Моя цель — показать вам множество областей, в которых JavaScript является ключевым инструментом. Будь то веб-разработка, создание приложений, игр, визуализация данных или другие области, вы поймете, как эффективно использовать язык программирования JavaScript для достижения разнообразных целей.
Освоив продвинутые концепции языка программирования JavaScript, позволит вам успешно решать сложные задачи по используя объектно-ориентированное программирование, асинхронное программирование, современные фреймворки и библиотеки.
В процессе разработки этого курса, я опирался на свой многолетний опыт в веб разработке и официальную ECMAScript Language Specification, что позволило мне создать курс, соответствующий самым современным стандартам и требованиям индустрии.
Для кого этот курс:
Курс будет полезен: IT-специалистам, Frontend разработчикам, Backend разработчикам, Разработчикам игр, Мобильным разработчикам, Тестировщикам.
ПРОДАЖНИК:
СКАЧАТЬ: