Дистанційне навчання Home
Дистанционное обучение в СумГУ: дисциплины » Теория программирования

Вступ

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

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


Содержание дисциплины.

" Основы теории отношений, частичный порядок, алгебраические структуры, универсальные алгебры..

" Языки и грамматики. Алфавит, строки и подстроки. Операции над языками. Продукции, грамматики. Иерархия Хомского.

" Регулярные выражения. Детерминированные конечные автоматы (ДКА), язык ДКА. Диаграммы и таблицы переходов. Недетерминированные конечные автоматы (НКА). Эквивалентность ДКА и НКА. Конечные автоматы с ε-переходом. Связь автоматов с регулярными выражениями. Построение регулярного выражения по ДКА. ых выражений. Построение НКА по регулярному выражению. Свойства регулярных языков.

" Контекстно-свободные языки. Левые и правые порождения. Деревья разбора. Неоднозначность в грамматиках. Автоматы с магазинной памятью. Детерминированные МП-автоматы. Свойства контекстных языков. Нормальная форма Хомского. Лемма о расширении для контекстно-свободных языков.

" Методологии программирования. Императивное программирование, объектно-ориентированное программирование. Лямбда-исчисление, функциональное программирование, язык Лисп, операторы языка. Логическое программирование, хорновские выражения, язык логического программирования Пролог.

" Верификация программ. Постусловия, предусловия и слабейшие предусловия. Правила верификации Хоара. Аксиомы, правила логического вывода и правила логического следствия. Правила для последовательности операторов, условного оператора, цикла с предусловием.

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

Мета та завдання

Задачи изучения дисциплины

В результате изучения дисциплины студенты должны приобрести

ЗНАНИЯ:

- теоретических основ программирования;

- основ построения формальных языков и грамматик;

- систем программирования;

- семантики программ;

- основных методологий программирования;

- основ теории компиляции и вычислений.

УМЕНИЯ:

- строить формальные модели языков программирования и программ;

- планировать и строить компиляторы;

- выполнять доказательства правильности программ;

- строить грамматики простых языков программирования;

- работать с разными типами программного обеспечения.

Автори

кафедра компьютерных наук, секция "Информатика"

Бабий Михаил Семёнович
кандидат технических наук, доцент


Содержание дисциплины О курсе
    Об авторе
Лекция 1
    Множества
Лекция 2
    Отношения
Лекция 3
    Порядок, структуры
Лекция 4
    Универсальные алгебры
Лекция 5
    Языки и грамматики
Лекция 6
    Регулярные выражения
Лекция 7
    Недетерминированные конечные автоматы
Лекция 8
    Связь автоматов с РВ
    Лекция 10
       Магазинные автоматы
Лекция 9
    Контекстно-свободные языки
Лекция 11
    Лямбда-исчисление
Лекция 12
    Методологии программирования
Лекция 13
    Функциональное и логическое программирование
Лекции 14 и 15
    Верификация программ
Лекция 16
    Неразрешимые проблемы
Контрольная работа
    Задачи