Форма обучения:
дистанционная
Стоимость самостоятельного обучения:
бесплатно
Доступ:
свободный
Документ об окончании:
 
Уровень:
Для всех
Длительность:
46:01:00
Студентов:
213
Курс ставит своей целью познакомить студентов с функциональным языком программирования Haskell как с первым языком программирования.
Даются основные понятия, на практических примерах и задачах для самостоятельной работы показывается как программировать.
 

План занятий

Занятие
Заголовок <<
Дата изучения
Лекция 1
34 минуты
Обзор курса
Обзор курса, учебников, контрольных мероприятий. Книга Дональда Кнута "Искусство программирования". Программирование как наука, ремесло и как искусство
-
Лекция 2
26 минут
История функционального программирования
О решении задач, консультациях, проверке задач через сервер. Эффективность и управляемость кода. Введение. История функционального программирования.
-
Лекция 3
28 минут
Первые языки программирования
Компьютеры БСМ-4, БСМ-12. Компиляторы. Фортран (транслятор формул).
-
Лекция 4
21 минута
Императивные языки программирования
Фон-неймановская архитектура. Суть функционального программирования.
-
Лекция 5
28 минут
Суть функционального программирования
Функциональная парадигма в программировании. Первые примеры. Вычисление как преобразование выражения. Иная последовательность редукций.
-
Лекция 6
19 минут
Свойство Черча-Россера
Все варианты редукции three Infinity.
-
Лекция 7
30 минут
Примеры. Haskell — ленивый язык
Величины (значения). Типы величин (значения). Неопределенные величины.
-
Лекция 9
24 минуты
Функции (подход современной алгебры)
Отношение. Экзистенциональное равенство функций. Композиция функций. Ассоциативность композиции.
-
Лекция 10
24 минуты
Строгие функции
Виды вычислений (энергичные и ленивые). Преимущества Haskell.
-
Лекция 13
49 минут
Знакомство с системой HUGS. Скрипты и сессии
Пример кода в Haskell (сортировка списков). Полиморфная функция сортировки. Прелюдия (обзор Prelude.hs).
-
Лекция 14
21 минута
Комментарии
Комментарии .hs., .lhs. Комментарии в TEX .lhs.
-
Лекция 15
24 минуты
Базовые типы языка Haskell
Целые числа. Числа с плавающей точкой. Сравнения чисел. Логические величины. Символы.
-
Лекция 18
15 минут
Задание функций
Объявление и определение. Комбинация функций.
-
Лекция 21
23 минуты
Сопоставление с образцом
Рекурсия. Полиморфизм. Функция error.
-
Лекция 26
25 минут
Карринг (Currying)
Частичная параметризация. Функция curry.
-
Лекция 27
44 минуты
Скобки. Операторные секции
Функции высшего порядка. (Слайды, часть вторая). Функции на списках: map, filter. Разбор примеров (шаблоны программирования).
-
Лекция 28
48 минут
Левая и правая свертки: foldr и foldl
Правая свертка: foldl. Композиция функций. (.): многоликий карринг. Разбор примеров (шаблоны программирования).
-
Лекция 29
30 минут
Итерация: until
Mетод простой итерации, sqrt.
-
Лекция 30
19 минут
Вариация. Лямбда-выражения
Числовые функции. Целочисленные задачи.
-
Лекция 31
48 минут
Частное и остаток
Список простых чисел [2 .. n] (без дум об эффективности). Список простых чисел [2 .. n] (Решето Эратосфена). "
-
Лекция 35
18 минут
Вечный календарь
Разработка программы "сверху-вниз" на примере.
-
Лекция 37
19 минут
Численное дифференцирование.
Параметризация. Нули функции, метод Ньютона.
-
Лекция 43
10 минут
Лексикографический порядок
Append: объединение списков.
-
Лекция 53
35 минут
Функция zip (zipWith)
Этюд на zipWith: проверка отсортированности списка. Сканирование слева. Примеры scanl.
-
Лекция 54
33 минуты
Примеры scanl. Префиксы списка
Наивно: scanl через inits. Сканирование слева. Эффективное scanl.
-
Лекция 57
18 минут
Диапазон изменения" Q (итератор, генератор)
Предикатное (охранное) выражение P. Локальное определение L.
-
Лекция 66
20 минут
Структуры данных. Списки
Бесконечные списки. Создание бесконечных списков. Бесконечные списки на практике.
-
Лекция 67
31 минута
Функции на бесконечных списках
Получение списка простых чисел (этюд на iterate). Получение списка простых чисел (этюд на iterate). Генератор псевдослучайных чисел.
-
Лекция 69
14 минут
Кортежи
Использование кортежей. Tuples: кортежи (таплы). Tuples: зачем нужны?
-
Лекция 70
19 минут
Кортежи (продолжение)
Типичное использование: таблицы.
-
Лекция 71
17 минут
Синонимы. Мотивация
Задача: Сколько треугольников с узлами в заданных точках?
-
Лекция 72
47 минут
Tuples: зачем нужны? Типичное использование: таблицы
Задача: Сколько треугольников с узлами в заданных точках? (Повторение). Обсуждение задачи. Решение.
-
Лекция 73
31 минута
Синонимы. Синонимы из прелюдии
Параметризованный синоним. Пример: рациональные.
-
Лекция 74
19 минут
Haskell как язык ООП
Использование Haskell для прототипирования
-
Лекция 75
33 минуты
Инкапсуляция, наследование
Объект, класс. Абстракция и наследование. Полиморфизм, абстракция. Классы и перегрузка. Полиморфизмы. Полиморфизмы и классы. Class и Instance.
-
Лекция 76
18 минут
Встроенные классы. Класс Eq. Класс Ord
Пример: неупорядоченная пара. Плохое определение. Исправленное определение. Класс Show.
-
Лекция 77
19 минут
Класс Show. Класс Read
Класс Enum. Класс Num. Множественное наследование. Классы чисел. Алгебраические типы данных Типы-синонимы. Определение новых типов данных. Ограниченность типов-синонимов.
-
Лекция 78
29 минут
Размеченное объединение. Перечисляемые типы данных
Перечисляемые типы. Функции над Bool. Перечисляемые типы vs. Подразумеваемые отрезки. Пример deriving. Пример использования. Пример использования. "
-
Лекция 82
32 минуты
Размеченное объединение
Рекурсивные типы данных. Деревья.
-
Лекция 83
21 минута
Подсчет вершин (Node, Leaf)
Разновидности пометок деревьев. Разновидности деревьев. Дерево с разными вершинами.
-
Лекция 84
26 минут
Размеченное объединение. Деревья поиска
Поиск в Eq a. Поиск в Ord a. Деревья поиска. Поиск в дереве. Сбалансированность дерева.
-
Лекция 86
18 минут
Сортировка с помощью дерева поиска
Построение списка меток. Сортировка с помощью дерева поиска. Удаление вершины из дерева поиска.
-
Лекция 89
17 минут
Размеченное объединение. Метки полей
Доступ к полям: по шаблону (позиционный) или по именам? Метки полей: одним выстрелом двух зайцев. Метки полей: использование. Метки полей: построение новых величин. Метки полей: общий случай.
-
Лекция 95
16 минут
Инкапсуляция данных в модулях
Инкапсуляция — сокрытие деталей (encapsulate). Модули: экспорт и импорт.
-
Лекция 96
20 минут
Имена модулей и файлов. Обзор имен в Haskell
Обзор имен в Haskell: синтаксические правила. Пример модуля (экспортера). Пример модуля (импортера). Декларации. Экспорт и импорт.
-
Лекция 97
32 минуты
Контроль пространства имен
Пример на "qualified". Синонимы имен модулей. Модуль как способ реализации АТД. Реализация Tree как АТД. Использование Tree как АТД. Стек (LIFO) как АТД. Реализация стека на списке.
-
Лекция 98
35 минут
Реализация стека на списке
Реализация стека на списке пар (значение, количество).
-
Roma Golich
Roma Golich

В видио С. Абрамов пользуется TeX Centre, а где его взять под Widows? Как TeX в этой ОСи поставить и где взять?

В HaskellPlatform под Windows (7.10.3...) ...i при  :set +s, в отличие от HUGS S.O.E, статистика в сек., а не редукциях. Можно ли там статистику в редукциях выставить?

Под VS2008 кто-н. писал колоризатор под Haskell?  Add-in? Как оптимально автодополнение реализовать, ну, доступные интерпретатору идентификаторы вытянуть? HUGS SOE где исходники скачать? 

Курс — то, чего не хватало для курса по метакомпиляции.

Александр Соловьев
Александр Соловьев

Посмотрел 25 видео лекций - Программирование на Haskell.

Сейчас видео не доступно. Причина не ясна. Как  посмотреть видео курс до конца?

Ляман Немятли
Ляман Немятли
Азербайджан, Баку