Темы курсовых работ по дисциплине «Функциональное и логическое программирование»

Цель курсовой работы — дать возможность каждому испытать применение функционального или логического программирования вне рамок искусственных ограничений лабораторных работ, в приложении к решению конкретных интересных задач. Отдельным видом курсовых работ являются исследования, посвященные изучению отдельных библиотек, средств разработки и расширений языков Haskell или Prolog. Приветствуются работы, посвященные изучению и сравнительному анализу других языков функционального и логического программирования, не вошедших в программу курса.

Если у вас есть интерес к определенным задачам, если вам хочется досконально разобраться с каким-либо средством или библиотекой языков Haskell или Prolog, если вам интересно изучить другие языки функционального или логического программирования и провести их анализ и сравнение с изучаемыми языками — предлагайте свои идеи и варианты тем курсовых работ. Готовые темы представлены ниже.

При выборе темы, особенно исследовательской, имейте в виду, что с установкой и подключением пакета на вашей ОС и к вашему транслятору возможны сложности, связанные с необходимостью установки дополнительных библиотек и пр. Поэтому начинайте работу над курсовыми работами заранее, чтобы при необходимости можно было сменить тему, и для работы над новой темой осталось бы достаточно времени.

После выбора темы необходимо отметить ее у преподавателя, чтобы избежать повторений. Темы выдаются по принципу F.I.F.O.

Оформление курсовой работы выполняется обычным образом. Обратите внимание, чтобы в списке использованной литературы были указаны достоверные источники информации, которыми вы пользовались. При использовании ресурсов сети Интернет указывайте полный путь к статье или книге, а не только адрес главной страницы сайта. При использовании справочников типа Wikipedia, указывайте названия статей или ключевые слова по которым осуществлялся поиск. Пожалуйста, не указывайте в списке литературы ваш конспект, который вы пишите на лекциях — в конце плана каждой лекции приводятся источники, откуда взята основная часть информации для данной лекции. Ссылайтесь на них.

Сдача курсовой работы будет происходить следующим образом. Сначала работа сдается в электронном виде. Для этого не позднее, чем за три дня до предполагаемой защиты курсовой работы отправьте заархивированные исходные тексты и пояснительную записку к работе по адресу электронной почты преподавателя. При отправке материалов позднее указанного срока, защита работы переносится на следующий раз. На защите необходимо будет сдать распечатанную пояснительную записку.

Крайний срок защиты курсовых работ — зачетная неделя. Максимальная оценка за работы, защищенные после зачетной недели — «удовлетворительно».

Некоторые темы проще, чем другие. Поэтому максимальная оценка, которую можно за них получить — «хорошо». Это отмечено в описании темы. Естественно, оценку «удовлетворительно» можно получить даже за «пятерочное» задание при его ненадлежащем выполнении или защите.

Исследование

В качестве темы курсовой работы может выступать исследование любой достаточно сложной библиотеки или средства из списка библиотек и инструментов языка Haskell (полный список).

При выборе темы заранее убедитесь, что у вас не возникает трудностей с установкой и настройкой среды или библиотеки, а также с пониманием документации к ней.

Рекомендуется воздерживаться от включения в отчет по курсовой работе фрагментов документации библиотек или средств разработки, переведенных с помощью автоматических переводчиков типа Stylus, ProMT и им подобных. Прочитав в отчете на месте фразы «Just execute the installer» перевод «Просто казните монтажника», сразу осознаешь, какой гигантский труд был вложен в его составление… Включая в отчет фрагменты из документации необходимо убедиться в качестве перевода.

Отчет по курсовой работе включающей исследование должен представлять собой руководство по использованию системы или библиотеки в практическом программировании и содержать: обоснование актуальности рассматриваемой проблемы; основной подход к ее решению, примененный в рассматриваемой библиотеке; общую структуру библиотеки; средства (функции) по категориям; описание применения отдельных функций для решения задач с исходным кодом и примерами результатов работы.

Некоторые из возможных тем:

  1. Профилирование программ на языке Haskell.
  2. Профилирование программ на языке Prolog.
  3. Автоматизированное тестирование программ на языке Haskell.
  4. Отладка программ на языке Haskell.
  5. Отладка программ на языке Prolog.
  6. Взаимодействие Haskell с платформой .NET.
  7. Связь Haskell с программами на языке ...
  8. Связь Prolog с программами на языке ...
  9. Работа с MIDI-интерфейсом.
  10. Библиотека Haskore для создания музыкальных произведений.
  11. Создание музыкальных произведений (не Haskore).
  12. Средства цифровой обработки сигналов.
  13. Синтезирование звука и звуковых эффектов.
  14. Представление виртуального звукового пространства в 3D.
  15. Механизмы синхронизации параллельных вычислений в программах на языке Haskell.
  16. Механизмы распределенных вычислений в программах на языке Haskell.
  17. Представление и обработка сложных структур данных в программах на Haskell.
  18. Средства работы с регулярными выражениями.
  19. Работа с СУБД ... в языке Haskell.
  20. Работа с СУБД ... в языке Prolog.
  21. Средства автоматизации разработки игровых программ на языке Haskell.
  22. Разработка графического интерфейса пользователя средствами библиотеки ....
  23. Компьютерная графика в программах на языке Haskell.
  24. Компьютерная графика в программах на языке Prolog.
  25. Работа с векторной графикой в языке Haskell.
  26. Специализированный язык генерации и обработки изображений ...
  27. Моделирование аналоговых электронных схем.
  28. Моделирование цифровых электронных схем.
  29. Специализированный язык описания электронных схем.
  30. Реализация генетических алгоритмов на Haskell.
  31. Обработка естественного языка на Haskell.
  32. Обработка естественного языка на Prolog.
  33. Моделирование физических процессов средствами ...
  34. Моделирование систем средствами ...
  35. Символьные вычисления и преобразование формул средствами ...
  36. Использование Haskell для решения математических задач.
  37. Библиотека для дискретной математики ...
  38. Обработка статистических данных.
  39. Построение диаграмм и графиков средствами ...
  40. Библиотеки алгоритмов преобразования геометрических объектов.
  41. Средства библиотеки ... для работы в компьютерной сети.
  42. Работа с низкоуровневыми функциями операционной системы.
  43. Анализ программ на языке ...
  44. Оптимизация (рефакторинга) программ на языке ...
  45. Преобразование программ на языке ...
  46. Генерация web-сайтов средствами библиотеки...
  47. Разбор и преобразование XML.
  48. Разбор и преобразование HTML.
  49. Платформы для генерации web-приложений.
  50. Специализированные языки для генерации web-сайтов.

Разработка

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

Некоторые из возможных тем:

  1. Задание олимпиады IСFP Programming Contest 1998 (на английском языке). Разработка программы для игры в «pousse».
  2. Задание олимпиады IСFP Programming Contest 1999 (на английском языке). Разработка программы компилятора и оптимизатора поведения персонажей игр interactive fiction.
  3. Задание олимпиады IСFP Programming Contest 2000 (на английском языке). Разработка трассировщика лучей для языка описания трехмерных сцен. Для генерации изображений можно использовать готовую библиотеку трассировки лучей на С и соединить ее с программой или разработать свою.
  4. Задание олимпиады IСFP Programming Contest 2001 (на английском языке). Разработка программы оптимизатора/компрессора гипертекстовых документов.
  5. Задание олимпиады IСFP Programming Contest 2002 (на английском языке). Разработка программы управления роботами в лабиринте.
  6. Задание олимпиады IСFP Programming Contest 2003 (на английском языке). Разработка программы-эмулятора автомобильных соревнований.
  7. Задание олимпиады IСFP Programming Contest 2004 (на английском языке). Разработка программы-эмулятора «муравейник».
  8. Задание олимпиады IСFP Programming Contest 2005 (на английском языке). Разработка программы-эмулятора «полицейские и грабители».
  9. Задание олимпиады IСFP Programming Contest 2006 (на английском языке). Разработка программы расшифровки древних записей.
  10. Задание олимпиады IСFP Programming Contest 2007 (на английском языке). Разработка программы преобразования цепочек ДНК.
  11. Задание олимпиады IСFP Programming Contest 2008 (на английском языке). Разработка программы управления марсоходом.
  12. Задание олимпиады IСFP Programming Contest 2009 (на английском языке). Операция «Чистое небо».
  13. Задание олимпиады IСFP Programming Contest 2010 (на английском языке). Моделирование автомобильного и топливного рынков.
  14. Задание олимпиады IСFP Programming Contest 2011 (на английском языке). Lambda The Gathering.
  15. Задание олимпиады IСFP Programming Contest 2012 (на английском языке). The Lambda Lifter.
  16. Библиотека функций представления и оценки коммерческих контрактов.
  17. Игра типа Quest. Программа должна реализовывать текстовый квест в стиле игр Infocom (Zork и т.п.). Возможно участие в проекте двух человек, в этом случае второй должен написать для игры графический интерфейс пользователя.
  18. Встроенный язык описания интеллектуальных игроков (Non-Player Characters) для игры типа adventure или стратегии.
  19. Искусственный интеллект пошаговой стратегической игры.
  20. Логическая игра. Выберите игру сами, но перед началом реализации согласуйте с преподавателем.
  21. Игра «Крестики-нолики» с переменным размером игрового поля и выигрывающей цепочки. Максимальная оценка — «хорошо».
  22. Игра «Жизнь». Максимальная оценка — «хорошо».
  23. Игра в морской бой. Максимальная оценка — «хорошо».
  24. Встроенный язык описания определенного класса настольных игр. Библиотечные функции могут включать в себя параметризованные алгоритмы альфа- и бета- поиска.
  25. Программа графического представления позиций в шахматах и шашках. Максимальная оценка — «хорошо».
  26. Игра «Бумажный футбол».
  27. Система описания текстовых презентаций.
  28. Эмулятор среды более низкого уровня.
  29. Загрузка и классификация RSS.
  30. Система управления контентом сайта.
  31. Система генерации сайтов на основе сценариев.
  32. Система верификации сайтов на основе правил.
  33. Программа обработки и трансформации XML-документов. Пример: вывод статистики о сценарии фильма и преобразование xml в html
  34. Робот для извлечения информации web-сайтов.
  35. Поисковая система web-сайтов.
  36. Интерпретатор | компилятор языка ... средствами Haskell.
  37. Интерпретатор | компилятор языка ... средствами Prolog.
  38. Интерпретатор языка Logo и программирование черепашьей графики.
  39. Транслятор с языка MathML в HTML или PostScript.
  40. Транслятор с подмножества языка C в Assembler.
  41. Транслятор с подмножества языка Pascal в Assembler.
  42. Парсер программ на языке Haskell.
  43. Программа, реализующая выполнение подмножества команд языка SQL.
  44. Программа поиска по библиотечной базе данных. Поиск публикаций по названиям, автору, издательству, ключевым словам. Инкрементный поиск с использованием шаблонов или регулярных выражений.
  45. Утилита поиска grep (Global Regular Expression Print). Программа должна осуществлять поиск текстовых строк, заданных регулярными выражениями по файлу или группе файлов.
  46. Программа форматирования текста, находящегося в файле (разбиение на строки с переносом слов, отступы, заголовки). Максимальная оценка — «хорошо».
  47. Разработка программы ассоциативного поиска и категоризации текстов.
  48. Криптографические функции средствами Haskell.
  49. Программа шифрования текстов методом Виженера и взлома этих шифров. Максимальная оценка — «хорошо».
  50. Встроенный язык описания документов определенного типа с конвертацией в HTML, PostScript или PDF.
  51. Встроенный язык описания и выполнения интерактивных презентаций.
  52. Встроенный язык сценариев программирования одноранговых сетей (поиск в сетях Napster, Gnutella, и т.п.)
  53. Встроенный язык описания музыки (по аналогии с Hascore).
  54. Неинтерактивная электронная таблица. Необходимо обеспечить ввод информации из текстовых файлов, расчет значений формул с возможностью вывода информации в текстовый файл или в HTML-формате.
  55. Программа-калькулятор с функциональностью инженерного калькулятора Windows. Максимальная оценка — «хорошо».
  56. Система вычисления и упрощения арифметических выражений с объяснением способа получения ответа. Максимальная оценка — «хорошо».
  57. Система символьного дифференцирования, интегрирования и упрощения некоторых типов выражений. Максимальная оценка — «хорошо».
  58. Система решения вычислительных задач по геометрии. Максимальная оценка — «хорошо».
  59. Программа автоматического анализа условий учебных задач, сформулированных на естественном языке.
  60. Генератор тестовых заданий на основе образцов.
  61. Программа эмуляции систем массового обслуживания с дискретным временем. Предусмотреть возможность текстовой или графической визуализации поведения системы.
  62. Справочно-информационая система авиакомпании. Система должна позволять работать с базой рейсов и подбирать рейсы (с учетом стыковок рейсов в течение одних суток) по минимальной стоимости билетов.
  63. Справочно-информационая система железной дороги. Система должна позволять работать с базой рейсов и подбирать рейсы (с учетом пересадок в течение одних суток) по минимальному времени в пути.
  64. Система поиска маршрута по сети линий метро. Информация должна быть представлена наглядно в графическом виде.
  65. Информационно-справочная система общественного транспорта Белгорода.
  66. Информационная система оптимизации перевозки грузов.
  67. Автоматизированная система составления расписаний.
  68. Автоматизированная система планирования встреч и совещаний.
  69. Морфологический анализатор основных типов слов русского языка.
  70. Морфологический анализатор английских слов (с обработкой лингвистических исключений).
  71. Синтаксический анализатор простых предложений русского языка.
  72. Синтаксический анализатор предложений английского языка.
  73. Парсер простого языка представления знаний экспертной системы. Максимальная оценка — «хорошо».
  74. Экспертная системы по классификации объектов некоторой предметной области. Максимальная оценка — «хорошо».
  75. Экспертная системы по ремонту/настройке устройств некоторой предметной области. Максимальная оценка — «хорошо».

Плагиат, в случае его обнаружения, будет караться быстро и беспощадно. Даже и не пытайтесь.