СИКП на 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: Последовательности
Молния
JS: Последовательности
Выравнивание
JS: Последовательности
Первые n элементов
JS: Последовательности
Одинаковая четность
JS: Последовательности
Уникальное объединение
JS: Последовательности
Быстрая сортировка
JS: Последовательности
Списки на базе строк
JS: Последовательности
Задача про ферзей
JS: Последовательности
Выбор по селектору
JS: Последовательности
Периметр многоугольника
JS: Коллекции
Чанкование
JS: Коллекции
Найди отличия
JS: Коллекции
Представление массива в виде объекта
JS: Коллекции
Пересечение массивов
JS: Коллекции
Исключаем лишних
JS: Коллекции
Нечетное количество
JS: Коллекции
Сборщик строки запроса
JS: Коллекции
Поиск ближайшего соседа
JS: Коллекции
NRZI кодирование
JS: Коллекции
Увеличение двумерного массива
JS: Коллекции
Нормализация данных
JS: Функциональное программирование
Числа Черча
JS: Функциональное программирование
Композиция функций
JS: Функциональное программирование
Каррирование

Впечатления

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

У меня прозрение! Я уже прошел всю "профессию", но только после этого урока по-настоящему понял:

  1. что такое ООП и зачем оно нужно
  2. как работает "передача сообщений"
  3. разницу между объектами в контексте ООП и типом данных Object в JS

Неиспользование в данном курсе специфического для языка синтаксиса действительно помогло лучше понять фундаментальные концепции программирования!

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

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

потрясающе как из пар строились точки в координатной плоскости, а теперь с их же помощью динамическая диспетчеризация. это конечно высший пилотаж

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

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