Курс содержит большое количество упражнений, домашних заданий, и два курсовых проекта. Теории уделяется меньше внимания.
Курс расчитан на программистов, уже владеющих каким-либо языком программирования, и желающим изучить Эликсир. Курс не расчитан на новичков программировании. (И автор считает Эликсир не подходящим для изучения его как первого языка. Лучше начать с более популярных языков, как, например Python или JavaScript).
01.01. Решаем задачу FizzBuzz.
01.02. Интерактивная консоль (iex).
02.01. Немного истории.
02.02. Важные свойства BEAM.
02.03. Свойства Эликсир.
02.04. Недостатки BEAM.
02.05. Сфера применения.
03.00. Типы данных.
03.01. Целые числа (Integer).
03.02. Числа с плавающей точкой (Float).
03.03. Булевые значения (Boolean).
03.04. Атомы и кортежи (Atom & Tuple).
03.05. Списки (List).
03.06. Словари (Map).
03.07. Строки и бинарные данные (String & Binary).
03.08. Системные типы (System Types).
03.09. Сложные типы (Complex Types).
04.01. Pattern Matching.
04.02. Pattern Matching для Map.
04.03. Конструкция case, тела функций, охранные выражения.
04.04. Конструкции cond и if.
04.05. Keyword list, синтаксический сахар и макросы.
05.01. Иммутабельность.
05.02. Устройство списков.
05.03. Рекурсия.
05.04. Хвостовая рекурсия.
05.05. Рекурсивные функции с аккумуляторами.
05.06. Неограниченная рекурсия (Unbounded recursion).
06.01. Map, Filter.
06.02. Reduce (Fold).
06.03. Модуль Enum.
06.04. Конструкторы списков.
06.05. Модуль Stream.
07.01. Создание проекта.
07.02. Моделирование предметной области.
07.03. Использование Map.
07.04. Использование Struct.
07.05. Struct с указанием типов.
07.06. Алгебраические типы данных.
07.07. Протокол.
07.08. Record.
07.09. Что такое функциональное программирование?
08.01. Исключения.
08.02. Классы исключений.
08.03. Пользовательские типы исключений.
08.04. Defensive Programming vs Let It Crash.
09.01. Задача на композицию функций.
09.02. Решение 1. Вложенные case.
09.03. Решение 2. Каждый case в отдельной функции.
09.04. Решение 3. Использование исключений.
09.05. Решение 4. Монада Result и оператор bind.
09.06. Решение 5. Pipeline.
09.07. Решение 6. do-нотация.
09.08. Что такое монада?
10.01. Работа с процессами на низком уровне.
10.02. Почтовый ящик.
10.03. Связь между процессами.
10.04. Мониторинг процессов.
10.05. MapReduce.
11.01. Task.
11.02. Agent.
11.03. Создание GenServer.
11.04. Модуль GenServer.
11.05. Использование GenServer.
12.01. Supervisor.
12.02. Использование Supervisor.
12.03. Dynamic Supervisor.
12.04. Application.
12.05. Конфигурирование Application.
12.06. Observer.
13.01. OTP.
13.02. Релиз.
13.03. Модель акторов.
13.04. Let It Crash.
14.01. ETS, DETS.
14.02. Mnesia.
14.03. Persistent Term.
15.01. UDP Socket.
15.02. TCP Socket.
15.02. Сервер с Acceptor Pool.
15.03. Бинарные и текстовые протоколы.