- Применить навыки логического и функционального программирования при решении реалистичной задачи
- Построить и проанализировать родословное дерево своего рода на несколько поколений
-
Создать родословное дерево своего рода на несколько поколений (3-4) назад в стандартном формате GEDCOM. Для этого рекомендуется использовать сервис MyHeritage.com, зарегистрировавшись в нем и подключив к заполнению дерева других родственников (указав их контактный e-mail при регистрации, что приведет к автоматической рассылке приглашения на их адрес). Если Вы по каким-то причинам не хотите использовать свою родословную - вы можете использовать файл родословной европейской знати.
-
Преобразовать файл в формате GEDCOM в набор утверждений на языке Prolog, используя одно из следующих представлений в зависимости от номера в группе в соответствии с формулой ((N-1)+3) mod 4 + 1:
- с использованием предиката
parents(потомок, отец, мать)
- с использованием предикатов
parent(родитель, ребенок)
,sex(человек, m/f)
- с использованием предиката
child(ребенок, родитель)
,male(человек)
,female(человек)
- с использованием предикатов
father(отец, потомок)
иmother(мать, потомок)
- с использованием предиката
Для преобразование рекомендуется использовать один из следующих инструментов (в порядке уменьшение предпочтительности): * Функциональный язык программирования (F#, Haskell, LISP, …) * Язык Prolog * Языки высокого уровня, позволяющие легко проводить обработку текста (Python, Ruby, Perl, awk, …) * Другие императивные и ОО языки программирования
Отличная оценка подразумевает использование одного из первых двух пунктов. Использование неадекватного инструмента, приводящего к чрезмерно сложной программе, не рекомендуется, и оценивается соответственно.
- Реализовать предикат проверки/поиска следующих родственников в соответствии с номером варианта ((N-1) mod 7)+1:
- Шурин
- Деверь
- Золовка
- Двоюродный брат
- Свекровь
- Теща
- Троюродный брат или сестра
- [На оценки хорошо и отлично] Реализовать программу на языке Prolog, которая позволит определять степень родства двух произвольных индивидуумов в дереве, например:
?- relative(brother, ‘Петя’, X).
X = ‘Вася’
?- relative(W,’Петя’,’Вася’).
X = brother
X = child – father
% т.е. Вася является ребенком отца Пети
X = child – mother
% т.е. Вася является ребенком матери Пети
- [На оценки хорошо и отлично] Реализовать естественно-языковый интерфейс к системе, позволяющий задавать вопросы относительно степеней родства, и получать осмысленные ответы. Допускается использовать английский язык в качестве базового. Для отличной оценки требуется:
- Учесть контекст (возможность использования it/him/her с отсылкой на упоянутый на прошлом шаге объект)
- Выполнять запросы относительно количества (How many brothers does Mary have?)
- Выполнить разбор предложения с построением смысловой модели.
Отчет по курсовому проекту должен содержать:
-
ОРИГИНАЛЬНЫЙ мини-реферат
Essay.md
(объемом более 3000 слов) на одну из следующих тем, в соответствии с номером варианта (N mod 13)+1:- Как научить младшую сестру/брата логическому программированию
- Логическое программирование при создании современных информационных систем
- Как научить вашу бабушку/дедушку логическому программированию
- Как использовать логические языки чтобы научить компьютер играть в шахматы/шашки
- Логические языки как первые языки для обучения программированию
- Логические языки как путь к автоматическому решению задач компьютером
- Логические языки и базы данных
- Типовые и бестиповые логические языки: обзор и сравнение.
- Современные языки и системы логического программирования
- Математическая логика и логическое программирование: сравнение
- Что было бы, если бы человечество придумало Prolog как первый язык программирования?
- Почему не получилось реализовать ЭВМ пятого поколения?
- Сравнение реализации алгоритмов поиска на логических и императивных языках
- [Иванопуло] За что я люблю логическое программирование
Реферат должен быть написан на основе прочтения 3-5 источников (указанных в конце в списке литературы), и представлять собой оригинальный текст, написанный Вами лично. Все дословные заимствования должны быть оформлены в виде цитат. Обязательно наличие в реферате умных мыслей.
Тему реферата можно предложить самостоятельно. Для этого необходимо:
- создать pull request (в репозитории LP_Capstone) к этому документу с предложенной новой темой реферата (в конце темы напишите в скобках свою фамилию)
- после того, как pull request одобрен и тема стала доступна в репозитории, Вы можете брать эту тему и писать реферат
-
Отчет по курсовому проекту
Report.md
-
Все исходные файлы, необходимые для запуска проекта
Плагиат при выполнении курсового проекта не допускается:
- Дословное заимствование текста реферата (более 10% текста) из каких-либо источников или друг у друга.
- Использование целиком фрагментов программ других учащихся или из доступных источников
При обнаружении плагиата работа аннулируется, и учащемуся выдается новый вариант задания, при этом впоследствии выполненная работа не может быть оценена выше, чем удовлетворительно.
Отнеситесь к этому серьезно, это важно!