Математическая логика — это наука о правильных математических рассуждениях, и сама по себе относится к основаниям математики. Однако, математическая логика необходима для понимания таких областей программирования как теория компиляторов или верификация программного обеспечения. Изложение материала, в целом, следует академической традиции, и преследует цель подготовить студентов к освоению конкретных практических дисциплин. Материал данного курса излагается в форме онлайн-лекций. С лекциями даются простые задания для самоконтроля и понимания материала. Также, студентам будут предложены лабораторные работы. В курсе множество конструктивных теорем. Потому предлагаемые лабораторные работы — это практические задания на программирование: на построение, проверку, перестроение формальных доказательств.
Студенты, прошедшие курс, получат представление об основаниях математики (логические исчисления, формальная арифметика, теоремы Гёделя о неполноте арифметики). Также студенты подготовятся к изучению сложных вопросов на стыке математической логики и программирования (функциональные языки программирования, теория типов, верификация программ) и приобретут навыки разработки программ обработки формальных текстов.
Пререквизиты: студенты должны иметь базовые математические знания (бинарные отношения и их свойства, функции, вещественные числа, множества, мощность множеств, счётность, базовые понятия теории графов). Также, необходимо владеть языком программирования (одним из следующих: C, C++, Java, Kotlin, Haskell, Ocaml) и иметь базовые навыки программирования (списки, деревья, грамматики, разбор выражений)
Уровень сложности: 1
Форма контроля: зачет
Преподаватели:
Штукенберг Дмитрий Григорьевич
Преподаватель факультета информационных технологий и программирования.