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

План занятий

Занятие
Заголовок <<
Дата изучения
Обзор курса
Обзор курса, учебников, контрольных мероприятий. Книга Дональда Кнута "Искусство программирования". Программирование как наука, ремесло и как искусство
Оглавление
    -
    История функционального программирования
    О решении задач, консультациях, проверке задач через сервер. Эффективность и управляемость кода. Введение. История функционального программирования.
    Оглавление
      -
      Первые языки программирования
      Компьютеры БСМ-4, БСМ-12. Компиляторы. Фортран (транслятор формул).
      Оглавление
        -
        Императивные языки программирования
        Фон-неймановская архитектура. Суть функционального программирования.
        Оглавление
          -
          Суть функционального программирования
          Функциональная парадигма в программировании. Первые примеры. Вычисление как преобразование выражения. Иная последовательность редукций.
          Оглавление
            -
            Свойство Черча-Россера
            Все варианты редукции three Infinity.
            Оглавление
              -
              Примеры. Haskell — ленивый язык
              Величины (значения). Типы величин (значения). Неопределенные величины.
              Оглавление
                -
                Функции (подход современной алгебры)
                Отношение. Экзистенциональное равенство функций. Композиция функций. Ассоциативность композиции.
                Оглавление
                  -
                  Строгие функции
                  Виды вычислений (энергичные и ленивые). Преимущества Haskell.
                  Оглавление
                    -
                    Знакомство с системой HUGS. Скрипты и сессии
                    Пример кода в Haskell (сортировка списков). Полиморфная функция сортировки. Прелюдия (обзор Prelude.hs).
                    Оглавление
                      -
                      Комментарии
                      Комментарии .hs., .lhs. Комментарии в TEX .lhs.
                      Оглавление
                        -
                        Базовые типы языка Haskell
                        Целые числа. Числа с плавающей точкой. Сравнения чисел. Логические величины. Символы.
                        Оглавление
                          -
                          Задание функций
                          Объявление и определение. Комбинация функций.
                          Оглавление
                            -
                            Сопоставление с образцом
                            Рекурсия. Полиморфизм. Функция error.
                            Оглавление
                              -
                              Карринг (Currying)
                              Частичная параметризация. Функция curry.
                              Оглавление
                                -
                                Скобки. Операторные секции
                                Функции высшего порядка. (Слайды, часть вторая). Функции на списках: map, filter. Разбор примеров (шаблоны программирования).
                                Оглавление
                                  -
                                  Левая и правая свертки: foldr и foldl
                                  Правая свертка: foldl. Композиция функций. (.): многоликий карринг. Разбор примеров (шаблоны программирования).
                                  Оглавление
                                    -
                                    Итерация: until
                                    Mетод простой итерации, sqrt.
                                    Оглавление
                                      -
                                      Вариация. Лямбда-выражения
                                      Числовые функции. Целочисленные задачи.
                                      Оглавление
                                        -
                                        Частное и остаток
                                        Список простых чисел [2 .. n] (без дум об эффективности). Список простых чисел [2 .. n] (Решето Эратосфена). "
                                        Оглавление
                                          -
                                          Вечный календарь
                                          Разработка программы "сверху-вниз" на примере.
                                          Оглавление
                                            -
                                            Численное дифференцирование.
                                            Параметризация. Нули функции, метод Ньютона.
                                            Оглавление
                                              -
                                              Лексикографический порядок
                                              Append: объединение списков.
                                              Оглавление
                                                -
                                                Функция zip (zipWith)
                                                Этюд на zipWith: проверка отсортированности списка. Сканирование слева. Примеры scanl.
                                                Оглавление
                                                  -
                                                  Примеры scanl. Префиксы списка
                                                  Наивно: scanl через inits. Сканирование слева. Эффективное scanl.
                                                  Оглавление
                                                    -
                                                    Диапазон изменения" Q (итератор, генератор)
                                                    Предикатное (охранное) выражение P. Локальное определение L.
                                                    Оглавление
                                                      -
                                                      Структуры данных. Списки
                                                      Бесконечные списки. Создание бесконечных списков. Бесконечные списки на практике.
                                                      Оглавление
                                                        -
                                                        Функции на бесконечных списках
                                                        Получение списка простых чисел (этюд на iterate). Получение списка простых чисел (этюд на iterate). Генератор псевдослучайных чисел.
                                                        Оглавление
                                                          -
                                                          Кортежи
                                                          Использование кортежей. Tuples: кортежи (таплы). Tuples: зачем нужны?
                                                          Оглавление
                                                            -
                                                            Кортежи (продолжение)
                                                            Типичное использование: таблицы.
                                                            Оглавление
                                                              -
                                                              Синонимы. Мотивация
                                                              Задача: Сколько треугольников с узлами в заданных точках?
                                                              Оглавление
                                                                -
                                                                Tuples: зачем нужны? Типичное использование: таблицы
                                                                Задача: Сколько треугольников с узлами в заданных точках? (Повторение). Обсуждение задачи. Решение.
                                                                Оглавление
                                                                  -
                                                                  Синонимы. Синонимы из прелюдии
                                                                  Параметризованный синоним. Пример: рациональные.
                                                                  Оглавление
                                                                    -
                                                                    Haskell как язык ООП
                                                                    Использование Haskell для прототипирования
                                                                    Оглавление
                                                                      -
                                                                      Инкапсуляция, наследование
                                                                      Объект, класс. Абстракция и наследование. Полиморфизм, абстракция. Классы и перегрузка. Полиморфизмы. Полиморфизмы и классы. Class и Instance.
                                                                      Оглавление
                                                                        -
                                                                        Встроенные классы. Класс Eq. Класс Ord
                                                                        Пример: неупорядоченная пара. Плохое определение. Исправленное определение. Класс Show.
                                                                        Оглавление
                                                                          -
                                                                          Класс Show. Класс Read
                                                                          Класс Enum. Класс Num. Множественное наследование. Классы чисел. Алгебраические типы данных Типы-синонимы. Определение новых типов данных. Ограниченность типов-синонимов.
                                                                          Оглавление
                                                                            -
                                                                            Размеченное объединение. Перечисляемые типы данных
                                                                            Перечисляемые типы. Функции над Bool. Перечисляемые типы vs. Подразумеваемые отрезки. Пример deriving. Пример использования. Пример использования. "
                                                                            Оглавление
                                                                              -
                                                                              Размеченное объединение
                                                                              Рекурсивные типы данных. Деревья.
                                                                              Оглавление
                                                                                -
                                                                                Подсчет вершин (Node, Leaf)
                                                                                Разновидности пометок деревьев. Разновидности деревьев. Дерево с разными вершинами.
                                                                                Оглавление
                                                                                  -
                                                                                  Размеченное объединение. Деревья поиска
                                                                                  Поиск в Eq a. Поиск в Ord a. Деревья поиска. Поиск в дереве. Сбалансированность дерева.
                                                                                  Оглавление
                                                                                    -
                                                                                    Сортировка с помощью дерева поиска
                                                                                    Построение списка меток. Сортировка с помощью дерева поиска. Удаление вершины из дерева поиска.
                                                                                    Оглавление
                                                                                      -
                                                                                      Размеченное объединение. Метки полей
                                                                                      Доступ к полям: по шаблону (позиционный) или по именам? Метки полей: одним выстрелом двух зайцев. Метки полей: использование. Метки полей: построение новых величин. Метки полей: общий случай.
                                                                                      Оглавление
                                                                                        -
                                                                                        Инкапсуляция данных в модулях
                                                                                        Инкапсуляция — сокрытие деталей (encapsulate). Модули: экспорт и импорт.
                                                                                        Оглавление
                                                                                          -
                                                                                          Имена модулей и файлов. Обзор имен в Haskell
                                                                                          Обзор имен в Haskell: синтаксические правила. Пример модуля (экспортера). Пример модуля (импортера). Декларации. Экспорт и импорт.
                                                                                          Оглавление
                                                                                            -
                                                                                            Контроль пространства имен
                                                                                            Пример на "qualified". Синонимы имен модулей. Модуль как способ реализации АТД. Реализация Tree как АТД. Использование Tree как АТД. Стек (LIFO) как АТД. Реализация стека на списке.
                                                                                            Оглавление
                                                                                              -
                                                                                              Реализация стека на списке
                                                                                              Реализация стека на списке пар (значение, количество).
                                                                                              Оглавление
                                                                                                -
                                                                                                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.

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

                                                                                                Надия Янгирова
                                                                                                Надия Янгирова
                                                                                                Россия, г. Казань
                                                                                                Владимир Романов
                                                                                                Владимир Романов
                                                                                                Россия, Курган, Курганский Государственный Университет, 2012