СИКП на JS

Эти курсы перевернут ваше представление о том что такое код, данные и функции. Они базируются на легендарном курсе "Структура и Интерпретация Компьютерных Программ (СИКП). В этих курсах создаются свои собственные типы данных, из которых строятся другие типы, изучаются функции высшего порядка, каррирование, частичное применение и многое другое. Вы познакомитесь с отложенными вычислениями, мемоизацией и лямбда-исчислением.

Курс

JS: Функциональное программирование

PRO

Тема функций — одна из центральных в JavaScript. Их мощь позволяет порой творить настоящие чудеса. Начиная с этого курса, функции начинают использоваться как данные, порождают другие функции и получают функции как аргументы.

Курс

JS: Составные данные

PRO

Следующий шаг после освоения основ программирования это изучение идеи составных данных. Этот курс посвящён изучению концепций, позволяющих из простых типов данных составлять более сложные данные, необходимые для решения конкретной задачи и для реализации конкретной программы. На примере разработки простой графической библиотеки мы изучим как «подняться» от уровня простых чисел до уровня двумерных объектов и рисунков.

Курс

JS: Последовательности

PRO

Продолжение изучения составных данных на более продвинутом уровне. Рассматриваем тип данных «список». В течение курса работаем над проектом «Генератор HTML», и на практике учимся понимать и использовать функции высшего порядка filter, map и reduce. Знакомимся с иерархическими структурами и уровневым проектированием.

Курс

JS: Программирование, управляемое данными

PRO

В течение этого курса мы будем писать собственную карточную игру и знакомиться с такими важными концепциями программирования, как пользовательские типы, динамическая диспетчеризация по типу, позволяющая писать ёмкий, универсальный код, полиморфизм, передача сообщений между сущностями и, конечно, основы важнейшей темы — объектно-ориентированного программирования. Также мы перейдем к разработке через тесты (test driven development).

Курс

JS: Коллекции

PRO

Этот курс посвящен конкретным приемам в работе с коллекциями, которые используются в языке JavaScript, а также изучению основных типов данных: массивов, ассоциативных массивов и множеств. В течение курса изучаются темы техники мемоизации, ленивых вычислений, использования функций высшего порядка, так называемых spread- и rest-операций и техник разрушающих присваиваний.

Испытания

JS: Составные данные
Пары без функций
Пары неотрицательных целых чисел можно представить числ...
JS: Составные данные
Тройка
Кроме пар можно создавать абстрактные типы данных, кото...
JS: Составные данные
Пары на строках
Пару можно создать на основе строки. Для хранения двух ...
JS: Последовательности
Выбор по селектору
Частой задачей при работе с деревьями (особенно HTML), ...
JS: Последовательности
Первые n элементов
take.js Реализуйте и экспортируйте по умолчанию функцию...
JS: Последовательности
Выбор по селектору
Частой задачей при работе с деревьями (особенно HTML), ...
JS: Последовательности
Задача про ферзей
Задача о восьми ферзях — широко известная задача по рас...
JS: Последовательности
Выравнивание
flatten.js Реализуйте и экспортируйте по умолчанию функ...
JS: Последовательности
Быстрая сортировка
sort.js Реализуйте и экспортируйте по умолчанию функцию...
JS: Последовательности
Списки на базе строк
Осторожно! Эта задача требует умения работать с массива...
JS: Последовательности
Одинаковая четность
sameParityFilter.js Реализуйте и экспортируйте по умолч...
JS: Последовательности
Молния
zip.js Напишите и экспортируйте по умолчанию функцию zi...
JS: Последовательности
Периметр многоугольника
calculatePolygonPerimeter.js Реализуйте и экспортируйте...
JS: Коллекции
Пересечение массивов
intersection.js Реализуйте и экспортируйте функцию по у...
JS: Коллекции
Сборщик строки запроса
Query String (строка запроса) - часть адреса страницы в...
JS: Коллекции
Поиск ближайшего соседа
findIndexOfNearest.js Реализуйте и экспортируйте по умо...
JS: Коллекции
NRZI кодирование
NRZI код (Non Return to Zero Invertive) — один из спосо...
JS: Коллекции
Увеличение двумерного массива
enlargeArrayImage.js Реализуйте и экспортируйте по умол...
JS: Коллекции
Нечетное количество
findOdd.js Дан массив чисел. Каждое число в массиве вст...
JS: Коллекции
Найди отличия
difference.js Реализуйте и экспортируйте функцию по умо...
JS: Коллекции
Нормализация данных
normalizeData.js Реализуйте и экспортируйте по умолчани...
JS: Коллекции
Представление массива в виде объекта
fromPairs.js Реализуйте и экспортируйте функцию по умол...
JS: Коллекции
Исключаем лишних
without.js Реализуйте и экспортируйте функцию по умолча...
JS: Коллекции
Чанкование
chunk.js Реализуйте и экспортируйте функцию по умолчани...
JS: Функциональное программирование
Каррирование
concat.js Реализуйте и экспортируйте по умолчанию карри...
JS: Функциональное программирование
Композиция функций
С точки зрения математики, композиция функций f и g — н...
JS: Функциональное программирование
Числа Черча
В 30-х годах прошлого века перед математиками встала та...

Впечатления

Урок: Объекты

После пройденной профессии PHP этот курс очень хорошо зашел. Более глубокое понимание темы ООП, чем популярное "это там, где классы и объекты"))

Отличное задание, было круто. На поиски решений ушли почти сутки, но это того стоило. Немножко запарился с вызовом функции для дамага и с тернарниками, коих я написал в большом колличестве. Решение учителя мне показалось досточно сложным для понимания, пришлось переписать его несколько раз, чтобы врубиться.

Спасибо за такой прекрасный курс, было очень интересно!)

Урок: Пары

Офигенное упражнение! На других ресурсах с первого урока дают массивы и объекты, здесь же треть курса позади и только пары начались, круто :)

Урок: Инверсия

Программирование, Управляемое Данными - ПУД. Пуд соли. Пока шёл по курсу, много раз хотел поднять лапы вверх и подсмотреть решение. Блин! Дошёл! Не сорвался! Теперь оборачиваюсь, а ларчик то, не так уж сложно открывался. И пуд соли оказался меньше, чем казался. Не сдавайтесь! Удачи всем! Hexlet вы класс!