Каррирование
частичное применение
Диспетчеризация
ленивые вычисления
мемоизация

СИКП на JS

Навык понимать программы на фундаментальном уровне, уверенно проходить собеседования и решать сложные задачи
выпускник Хекслета
Егор Самойлин
выпускник Хекслета

Программа обучения

1 месяц
11 часов теории
44 часа практики
Что важно знать заранее
Для успешного прохождения курса вам нужно базовое умение программировать на JavaScript, включая его ключевые конструкции, функции, работу с массивами и объектами
Если вы пока не знакомы с программированием, не переживайте!
У нас есть вводные курсы, которые помогут вам освоить основы и подготовиться к обучению. Мы объясним всё с нуля — доступно и наглядно
Guard Expression
Уменьшение сложности функций через разделение логики на условия
Параметры по умолчанию
Синтаксис задания параметров по умолчанию в функциях, влияние параметров по умолчанию на поведение функции при отсутствии аргументов, использование параметров по умолчанию для упрощения вызова функций
Выполнение функций
Порядок выполнения функций в составных выражениях
Объекты первого класса
Понятие функций как объектов первого класса, передача функций в качестве аргументов другим функциям, возврат функций как результата выполнения других функций
Лексическое окружение
Понятие лексического окружения и его роль в работе замыканий, взаимосвязь между лексическим окружением и областью видимости
Частичное применение и каррирование
Техника частичного применения для фиксации части аргументов функции, понятие каррирования и его преимущества для создания специализированных функций, сравнение частичного применения и каррирования в реальных сценариях
Моделирование предметной области
Создание моделей предметной области для представления данных и отношений, использование моделей для создания абстракций и сокрытия деталей реализации
Барьеры абстракции
Понятие барьеров абстракции и их роль в разделении уровней системы, примеры повышения уровня абстракции для упрощения взаимодействия между компонентами, влияние барьеров абстракции на поддерживаемость и расширяемость кода
Составные данные
Создание составных данных для представления сложных структур данных, использование составных данных для создания эффективного и масштабируемого кода
Пары
Создание пар и других составных данных для представления отношений между данными, использование пар и других составных данных для создания модульного и гибкого кода
Рациональные числа
Представление рациональных чисел как абстракции на основе пар, реализация операций над рациональными числами,
Моделирование сложных систем
Представление сложных структур данных на базе более простых, создание последовательностей на основе пар, обработка последовательностей
Инверсия
Изучение принципа инверсии зависимостей и его применение для улучшения тестируемости
Помеченные данные
Изучение концепции помеченных данных и их роли в управлении состоянием программы
Диспетчеризация по типу и аддитивность
Понятие аддитивных программ и их преимущества для построения модульных систем, изучение механизма динамической диспетчеризации и его роли в управлении поведением программы
Объекты
Основные принципы работы с объектами в контексте ООП, роль динамической диспетчеризации в работе с объектами и их методами, создание и использование объектов
Нативные объекты
Изучение объектов, встроенных в JavaScript, таких как Object, Array, Date и других, разбор особенностей изменяемости объектов, даже если они объявлены как константы, работа с нативными объектами
Классы и полиморфизм
Классы как структуры для создания объектов, механизм создания объектов с помощью new, изучение понятия полиморфизма и его трех типов: параметрического, ad-hoc и подтипов, примеры использования полиморфизма для создания гибкой и расширяемой системы
Массивы
Основные операции с массивами: добавление, удаление, поиск. особенности работы с массивами в JavaScript, примеры использования массивов для хранения и обработки данных
Map и Set
Структура данных Map для хранения пар ключ-значение, структура данных Set для хранения уникальных значений
Fluent Interface
Паттерн Fluent Interface для создания цепочек вызовов методов, примеры реализации Fluent Interface в JavaScript, преимущества и недостатки использования Fluent Interface
Неизменяемость
Понятие неизменяемости и её роль в функциональном программировании, примеры использования неизменяемых структур данных, влияние неизменяемости на производительность и безопасность кода
Ленивые вычисления
Понятие ленивых вычислений и их применение в JavaScript, примеры использования ленивых вычислений для оптимизации работы с коллекциями, сравнение ленивых и строгих вычислений
Операции rest, spread и деструктуризация
Операция rest для работы с переменным количеством аргументов, операция spread для объединения и копирования данных, деструктуризация массивов и объектов для извлечения данных

Как проходит обучение

Просто, наглядно и всегда под рукой
Вы изучаете теорию в удобном текстовом формате — легко читать даже с телефона. Живые примеры помогают сразу понять, как всё работает на практике. Материал выстроен так, чтобы вы шаг за шагом двигались от простого к сложному, не упуская важных деталей
Проверяем и закрепляем знания
После каждой темы вы проходите квизы, которые помогают убедиться, что вы всё поняли. Вопросы разного уровня сложности дадут возможность как проверить базу, так и попрактиковаться в применении знаний
Учитесь на реальных задачах
Мы создали удобную виртуальную среду, где вы решаете задачи прямо в браузере. У вас есть редактор кода, консоль и автоматические тесты, которые моментально показывают результат
Ваш AI-наставник в учебе
Наш Учебный помощник на базе ИИ — это как наставник, который всегда под рукой. Он понимает, где вы находитесь в курсе, что нужно сделать, и как выглядит ваш код. Если что-то пошло не так, вы сразу получите понятные и полезные подсказки
Занимаетесь сами, но не в одиночестве
Тяжело сохранять мотивацию, если обучаешься самостоятельно, поэтому мы создали крепкое IT-сообщество, где каждый студент получает поддержку и находит полезные контакты среди других разработчиков
IT-сообщество
Стоимость курса
Старт в любой момент
Продолжительность 2 месяца
Свободный режим учебы
AI-помощник
Интегрированное обучение: теория, тесты, тренажеры, проекты
Членство в IT-сообществе
от 3 900 ₽/мес
Хотите учиться от компании?

Расскажите вашему работодателю о Хекслете

Иллюстрация

Вопрос-ответ

Даже опытные разработчики найдут в наших курсах полезные знания. Мы подробно изучаем сложные структуры данных и их применение в задачах оптимизации кода.

Занятия помогут вам укрепить навыки программирования, улучшить архитектуру кода и глубже понять принципы работы алгоритмов. Курс поможет не только укрепить текущие навыки, но и подготовиться к следующему карьерному шагу

Вы можете учиться в своём темпе, срок обучения не ограничен.

Мы рекомендуем выделять 5-10 часов в неделю. Так с одной стороны обучение будет достаточно интенсивным, чтобы не растягивать его надолго, а с другой — достаточно комфортным, чтобы совмещать с работой и успевать отдыхать

Материал программы — это готовые курсы с адаптированной для новичков теорией, тестами на закрепление и большим количеством практических упражнений с автоматизированной проверкой прямо в браузере. В некоторых треках есть проект — вы создадите приложение, которое даст опыт реальной разработки

Мы принимаем карты Visa, MasterCard и МИР любого банка, валюта счёта тоже может быть любой